指针变量p1、p2类型相同,要使p2、p1指向同一变量,哪一个语句是正确的( A )。 A.p2=
A.p2=*&p1; B.p2=**p1; C.p2=&p1; D.p2=*p1; 为什么选A 求解释 C语言问题 展开
&p1,取p1的地址,*(&p1)就是取出p1的值,也就是说把p1变量赋给p2,其它都不对。
p是变量,可以赋值。&p1表示,取指针变量p1的地址;*&p1表示,获取指针变量p1的地址里指向的数据;*和&相当于相互抵消了,*&p1可以认为是p1,所以,答案A就相当于p2=p1
例:
int a = 5, b = 6;
int * p1 = &a;
int * p2 = &b;
p2 = *p1;//此处将p1指向的值5赋值给指针p2,p2从原来指向变量b的地址,现在变成了,指向了地址为5的地方。
扩展资料:
举例:int a = 68 ,系统为变量a分配的首地址为0X065FDF4H,声明空指针long *p = NULL,p=&a是存放变量a地址的指针变量,即p=&a中存放的值为0x065FDF4H(a的值为68,&a的值为0x065FDF4H)。
对变量a的访问有两种方式:
一是直接按地址0x065FDF4H找到a的存储单元,从而对变量a进行访问;
二是按系统为p=&a分配的地址先找到p=&a,根据p,&a的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。
参考资料来源:百度百科-指针变量