C指针问题:int a=12,*p=&a如何解释?跟p=&a有什么区别?我印象中应该p=&a是正确的,但是这里书上写成*p=&a,是什么意思?求详细解释另外如上的话*&a==a和&*p==p是如何各自成立的?*&a是指向a地址的指针,a

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 03:44:58
C指针问题:int a=12,*p=&a如何解释?跟p=&a有什么区别?我印象中应该p=&a是正确的,但是这里书上写成*p=&a,是什么意思?求详细解释另外如上的话*&a==a和&*p==p是如何各自成立的?*&a是指向a地址的指针,a

C指针问题:int a=12,*p=&a如何解释?跟p=&a有什么区别?我印象中应该p=&a是正确的,但是这里书上写成*p=&a,是什么意思?求详细解释另外如上的话*&a==a和&*p==p是如何各自成立的?*&a是指向a地址的指针,a
C指针问题:int a=12,*p=&a如何解释?跟p=&a有什么区别?
我印象中应该p=&a是正确的,但是这里书上写成*p=&a,是什么意思?求详细解释
另外如上的话*&a==a和&*p==p是如何各自成立的?*&a是指向a地址的指针,a是12,两者一个地址一个值,怎么就等同了?&*p是p指针的地址,p是a的地址,两个地址怎么能等同呢?这个最棘手的问题,求教!

C指针问题:int a=12,*p=&a如何解释?跟p=&a有什么区别?我印象中应该p=&a是正确的,但是这里书上写成*p=&a,是什么意思?求详细解释另外如上的话*&a==a和&*p==p是如何各自成立的?*&a是指向a地址的指针,a
定义的时:int a=12,int *p=&a; (编译器首先在内存里开辟了一个空间,并把a的地址放进去)
这在c语言中叫做“初始化”——在定义的时候给予一个初始的值;
如果没有进行初始化,定义成,int a,*p; 则编译器会给一个值,一般为0或空值.
对于,int *p; p=&a; (编译器首先在内存里给P分配一个空间,然后给它赋值,一般赋0x00000000,然后再把a的地址取出,放到p中)比直接初始化,多了一个赋值.用起来效果一样.