Mr丶张 发表于 2020-3-7 20:00:01

求助 关于指针的问题

#include <stdio.h>
2
3 int main ()
4 {
5         char *p = {
6               "qwert",
7               "assdfg",
8               "zxcvb"
9         };
10
11         printf("%s",p);
12
13         return 0;
14
15 }      


为什么第11行不能是*p呢,*p不就是qwert吗?

墨羽岚 发表于 2020-3-7 20:12:03

1:论坛的代码会自动帮你把每一行标出来,不用画蛇添足;
2:输出的应该是一个值p而非一个指针*p;
3:数组下标从0开始,故p输出第二个值

4goodworld 发表于 2020-3-7 21:58:59

本帖最后由 4goodworld 于 2020-3-7 22:00 编辑


一个字符串是通过首地址来表达出来的,而不是用值来表示的
也就是你要打印一串文本,你要提供的是字符串的首地址,也就是p,这里面的存储的值是某个内存的地址,通过首地址开始不断偏移,直到找到\0结尾才结束,把一串的内容打印出来

*p的意思是 先取出 p存储的值也是某个内存的地址,根据这个地址找到地址编号所在位置上的某个值
你仔细品一品,加不加*号,操作步骤和效果不一样,请再把指针理解下

Mr丶张 发表于 2020-3-7 23:39:47

4goodworld 发表于 2020-3-7 21:58
一个字符串是通过首地址来表达出来的,而不是用值来表示的
也就是你要打印一串文本,你要提供的是字符串 ...

好的谢谢
页: [1]
查看完整版本: 求助 关于指针的问题