C语言指针和数组问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:45:54
11.设有程序段:“char s[ ]= "char array"; char *p; p=s; ”则下面叙述正确的是 a 。
A)*p与s[0]相等
B)s和p完全相同
C)s数组长度和p所指向的字符串长度相等
D)数组s中的内容和指针变量p中的内容相等

我知道答案是A了,但是不明白,谁能详细的解释下?*p是数组S的首地址,可是S[0]里面应该装的是字符‘C’啊。那为什么*p=s[0]呢?难道不是p=&s[0]吗?

不是*p是首地址,而是把首地址s赋值给p了。p才是指针,不是*p,这一点要首先搞清楚!
现在让p = s;
说到这里已经很清楚了,如果还不明白,那我说s的值等于&s[0],这下就应该明白了。
而*p是什么?*p是指针p所指内存所保存的值。既然p已经等于s,也就是等于&s[0]了,*p和s[0]又有什么不同呢?
如果还不明白,看书吧。

呵呵
*p==s[0]
p==&s[0]
都对。
*p=s[0],注意前面有个星号啊 "*",取指针指向地址的值

“*p是数组S的首地址”,这个不对,单一个p才是s首地址

p是首地址, *p是首地址指向的内容.

既然你知道p = &s[0]了, 当然*p = s[0]了. p指针, *p是对p进行取内容后的结果.

那是数组存在指针里面