问个C++的基础问题?

来源:百度知道 编辑:UC知道 时间:2024/06/14 23:38:28
请问各位学兄,若是定义一个指针P那么,p=a;就是指向a的地址,p中存放的便是个地址值,若是*p=a,就是指向a中的内容,则p中便是a地址中的内容.
我这样理解指针对吗?请知道的朋友给我讲讲!~谢谢!~

首先你这样理解必须是a是一个指针或者数组,这样p= a才是你理解的那个意思。如果a是一个变量如int a
那么要想使用指针必须是p = &a,这样才能得到a的地址。

是的

有偏差,定义一个指针P那么,p=a;就是让指针p指向地址为a的空间
*p=a,就是使指针p所指向的空间值为a

打一个比方吧!如果有int a=1;int b=2;int *p;
p=&a; 就是说p的值是&a;&a是一个int*类型的值,即地址,p的值就是a的地址
大概可以有ffff12fe;
*p事实上就是*(ffff12fe)。 它和p是无关的,事实上,它是a;
我们说一个指针指向某某某,是说一个地址指向的对象,这里明显是地址p指向a;如果我们加上*p=b;是说p这个地址,指向的对象*p(即a)得到b的值。
“若是*p=a,就是指向a中的内容,则p中便是a地址中的内容”
这个理解就有问题了,第一,如果*p不是指针的话,就无所谓指向什么。
第二,p 不一定就是a的地址,而是说p的值,(假如说是ffff23a2)的对象,可能是其它变量,如一个int 类型的c,c=a;与p的值和a的地址一点关系都没有。
你想想看吧!

p是指地址,*p指地址所对应的单元,也就是值。

p=a,表示a也是指针类型变量,p与a指向同一个内容地址;
*p=a,表示p指向的地址里的内容是a。