如有int a =2,*p=&a ,*q=&a; 想问下指针*p一般是取内容,变量p一般是取地址&,但在此例中表达什么意思?

请简单阐述一下,*p=&a的含义,以及跟 p指向a有什么联系 ,及在机器解读程序过程中就出出现 *p=a . 希 大侠不吝赐教!

你能看懂: int* a;跟 int *a;吗亲?! 事实上int类型的指针是有自己的数据类型的:int* 但是为了方便在定义int变量的同时也能定义int指针故有此定义方式:int *p; 但你要很清楚,在定义指针的时候 *p的*并不是取内容的意思,而仅仅代表定义了一个指针变量! 事实上,正确的指针定义方式应该这么写:int* p; 好,这个问题解决了! (应该解决了吧 ?亲?) 那么下一个问题 也就是解释你的问题了......囧! *p=&a;语句中的*并不是你想的取内容的意思,但是后面的 &的确是取地址的意思 在定义中 写*p=&a如此代码对初学者来说真的不好理解 但是如果你很仔细了领会了我之前跟你说的知识那也不是不可以理解,你觉得呢?懂否? 不懂么? 那我把代码改成: int a=2,*p,*q; p=&a; q=&a; 呢?亲? 跟你的代码是等价的哦! 你当区分定义的时候指针的使用跟代码中指针的使用! 有过int a=2,*p=&a,*q=&a;的定义则代码中*p=a;的意思就是把a的数值赋值给p指向的int型数据,这里是变量a,故毫无意义,假定b=3;那么*p=b;之后b还是=3,指针p的值未变,但是指针所指的内容a发生了变化,变成了b的值3,此过程中指针p什么都没变! p,q是指针,&是取地址,&a取到的是变量a的地址,指针也是地址,这样赋值没问题吧?还有问题那就是你的问题了!
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-20
int *p = &a 这里 是定义 所以* 不是取内容的意思, 定义好了使用的时候,加*p 才是 取内容 注意这里是定义 * p = &a,让p指向 a的地址,或者说 ,把a的地址赋值给p,这里&是取地址符 注意,指针变量 ,也是一种变量,只是他是特别的变量,存放的是地址, *p = a,这里*p 就相当于 a , a = a;
相似回答