C语言中指针问题。

(1)int a=2,*p=&a;
(2)int a=2,*p;
*p=a;
(3)int a=2, (*p)=&a;
这三种方式有什么区别
哪种是错的??
越详细越好
我写错了
第2种是:
int a=2;*p;
p=&a;
麻烦详细说一下这3种的区别
特别是(1)和(2)
满意送分
我的老师说(1)里面是p指向a,
这样说对么,我不太认同哦
*p=&a;和p=&a的具体区别??

是不是
int a=2,*p;
*p=&a;
是错误的??

第一种和第三种是对的,也就是说在声明指针的时候对其初始化,这样指针就具有了一个地址,指向a。
第二种方法不对,因为当int*p的时候声明一个指针,但是这个指针没有指定指向的单元,也就是说是一个野指针,这样的指针的值是不能被改变的。

第二种你的写法是正确的,其实第一种和第二种是一个意思,
第一种主要强调在声明指针的时候就对其进行初始化
第二种是先声明一个指针,但是这个指针还没有指向任何地方,在下面的语句中将a的地址赋给p这样p就指向了a的存储单元。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-18
我来说两句:

(1)int a=2,*p=&a;

申明int类型的a,并 声明 整形指针同时将奇指向 a地址!

(2)int a=2,*p;
*p=a;

同上,不同在于 申明了指针之后,再将其赋值,意义相同!

(3)int a=2, (*p)=&a;

错误,(*p)的意义是 p指向的地址 的数据信息(int类型), 将它赋值为 &a(a的地址),显然是错误的.

以上为我的看法,楼主有非议 可以上机实验.
第2个回答  2008-11-18
1是定义整型数a=2,定义整型指针指向a(将a的地址赋值给指针p,在声明时给指针初始化,这样写是合法的);
2是定义整型数a(赋值为2)和整型指针p,然后通过p,向p所指向的内存单元写入a的值,也就是2.由于在定义指针是没有让它指向任何单元,所以这样做是不允许的;
3和1一样,加不加括号,“*”都是优先于“=”的。本回答被提问者采纳
第3个回答  2008-11-18
(2)应该为p=&a;
1.3应该是一样的。

我来讲下指针的一些基本常识吧:
&是取地址运算 &a表示取变量a地址的运算
*为间接运算 *p表示取指针p指向的变量内容的运算
第4个回答  2008-11-18
2
(1)int a=2,*p=&a; 定义一个整型变量和一个整型指针并指向变量地址。
(2)int a=2,*p;
定义一个整型变量和一个整型指针,但没给指针分配空间就给它赋值了。*p=a;

(3)int a=2, (*p)=&a; 好象和1一样。

*p=&a;和p=&a的具体区别??
1 定义指针变量时就赋初值了。
2。定义指针变量后再让P指向a的地址。

作用一样
相似回答