无线网玩游戏跳ping:C语言指针问题,请师哥们指点。是怎么给指针赋值的。

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 02:05:29
第一个:
char *P,s;
s='a';
*p=s;
_________________________
第一个对吗?s赋值给指针变量*p。

第二个:
char *P,s;
s='a';
*p=&s;
__________________________
第二个,指针变量*p取&s的地址值。对吗?

第三个:
char *P,s;
s='a';
p=s;
__________________________
第三个是怎么回事,p没有定义到吧?
*p才是指针变量。请大家为我解释
一下!谢谢!

第2个和第3个不对,第1个虽然可以运行,但不提倡这样用
在定义的时候 *p表示p是一个指针变量,但在引用的时候,*p表示p这个指针所指内存单元里的内容。
正确的方法应该是
char *p,s;
s='a';
p=&s;

第一个是错的 (运行时将出错) 指针不能保存值 只能保存地址
第二个对的 指针保存了s字符变量的地址
第三个赋值类型不匹配 (编译将出错)

我觉得应该这样赋值
char *p,s;
s='a';
p=&s; //去掉*

书上有多的例子多看看书就行

楼上直接回答的结果都是错的。
首先:定义的是大写P,使用时确是小写p;其次:如果定义小写p后,
第一、二个都是运行时错误(指针p定义后没有初始化,就进行取值操作),第三个编译错误(赋值操作符=两侧类型不匹配)。正确写法楼上有写是:
char *p,s;
s='a';
p=&s;
另外请楼主注意:p才是指针变量,*p是对p取值,就是把p所指地址的值取出。

第一个对的啊!