题目
p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的.A. p2=*&p1;B. p2=**p1;C. p2=&p1;D. p2=*p1
p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的.
A. p2=*&p1;
B. p2=**p1;
C. p2=&p1;
D. p2=*p1
题目解答
答案
C. p2=&p1;
解析
考查要点:本题主要考查对指针变量的理解,特别是如何通过指针操作使两个指针指向同一变量。
解题核心思路:
- 指针的本质是存储变量的地址,通过指针可以间接访问该地址的值。
- 要使两个指针指向同一变量,需确保它们存储的地址相同。
- 关键操作:通过指针的间接访问(
*)和取地址(&)操作,分析各选项是否能正确传递地址。
破题关键点:
- 选项A通过
*&p1组合操作,先取p1的地址,再取该地址的值(即p1本身存储的地址),最终使p2与p1指向同一变量。 - 其余选项因操作顺序或逻辑错误,无法正确传递地址。
选项分析
*选项A:`p2 = &p1`**
&p1:取p1指针变量本身的地址(即存储p1的内存位置)。- *`
操作**:对&p1的结果取间接值,即取出p1存储的地址(假设为变量a`的地址)。 - 赋值:
p2最终存储a的地址,与p1指向同一变量。
选项B:`p2 = p1`**
- *`p1
**:取p1指向的变量a的值(如100`)。 - `p1
**:试图对100取间接值,但100`是整数而非地址,导致非法内存访问。
选项C:p2 = &p1
&p1:取p1指针变量本身的地址,使p2指向p1,而非p1指向的变量。
*选项D:`p2 = p1`**
- *`p1
**:取p1指向的变量a的值(如100),将整数赋值给指针p2,导致p2`指向无效地址。