C语言指针问题:在定义指针时*p=a和p=a有区别吗?

如题所述

当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-03
在定义指针时,指针变量名前的*号是必须的,不能少,区别于普通变量, 说明当前变量是指针变量,而不是普通的变量。

对于你的问题,我举例说明:

情形一:

int a[5]={1,2,3,4,5};

int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它。

情形二:

int a[5]={1,2,3,4,5};

int *p;//声明指针变量p
p = a;
这里的话是先声明指针p,然后再对它初始话,等价于情形一,只是分开写法而已。本回答被提问者采纳
第2个回答  2010-07-04
*p=a
是p所指向地址的内容是a(比如一个数,或字符)
p=a
是p指向a(比如0x0001)这个地址

囧了...问题看漏了..上面那位兄弟是对的...=_=
第3个回答  2018-05-21
我觉得mcs51园地回答得有道理,比如*(a+1)=*(p+1)也论证了所说的a=p,而*p,你可以随意赋值进去,比如*p=1,*p=3等等,看一些程序还是有区别的,真理还是属于少数人啊
相似回答