最近在自学C语言 请问一下 P=&a,和*p=a有什么区别么 (能举一下例子么)

2024-12-21 11:24:28
推荐回答(5个)
回答1:

P=&a表示,P这个变量(内存地址)里面存的是a这个变量(即,内存地址)的地址。P在声明的时候,已经有自己的地址了,这样的用法就是把P里面的值改了,是安全的。

*P=a表示,P这个变量(即,内存地址)里面存的那个地址,其所存储的值为a这个变量的值。如果P里面的值(注意,是P里面的值,不是*P,也不是&P)是个非法的地址,比如说,你没有给初始值。那么,*P=a会导致segementation fault(linux下,如果windows下没出问题,那就是windows自己的底层库给P预设了安全的数值,但是,纯从标准上看,是不应该未初始化就这么写的。)

另外:
P=&a;
*P=b;
就会导致,a == b 为真。想想这个a是怎么变成与b相等的。这个例子应该足够理解其中区别了。

回答2:

p是指针变量,它存储的是指针

p=&a 是把a的地址给p
而*p则和a是一个类型,就是说*p相当于一个存储数据的变量,*p=a就是把a的值赋给*p
例如把你的两个语句P=&a;*p=a 那么 a的地址先赋给了p, 之后p就是a的地址,*p实际就是a了,*p=a就是把a的值存入p地址所标示的内存单元中,实际上如果把这两句放一起,后面那句*p=a就是没用的了。

回答3:

p是指针,它的数值是指向一个内存的地址,
&a的意思是取变量a的内存地址,所以p=&a的意思就是把变量a的内存地址赋值给指针p
*p的意思是取出p指向的内存地址的内容,所以*p=a的意思是把变量a的数据复制给指针p指向的内存空间.

回答4:

P=&a //把变量a的地址给指针p **p=a //变量a的值给指针p指向的地址
int *p,a=1;
p=&a //p就指向了存储a值的地址
//cout <<"p指向的地址:"<*p =a; //p指向的地址的值为a的值;
cout<<"p指向的地址的值:" <<*p<< " a的值:"<

回答5:

如果不区分大小写的话。
根据你的赋值。
p是一个指针变量。
a是一个变量。
p=&a, 把变量a的地址赋值给指针变量p。
*p=a 变量a的值赋值给a指向的内存单位。