求助 关于指针的问题
#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吗? 1:论坛的代码会自动帮你把每一行标出来,不用画蛇添足;
2:输出的应该是一个值p而非一个指针*p;
3:数组下标从0开始,故p输出第二个值 本帖最后由 4goodworld 于 2020-3-7 22:00 编辑
一个字符串是通过首地址来表达出来的,而不是用值来表示的
也就是你要打印一串文本,你要提供的是字符串的首地址,也就是p,这里面的存储的值是某个内存的地址,通过首地址开始不断偏移,直到找到\0结尾才结束,把一串的内容打印出来
而
*p的意思是 先取出 p存储的值也是某个内存的地址,根据这个地址找到地址编号所在位置上的某个值
你仔细品一品,加不加*号,操作步骤和效果不一样,请再把指针理解下 4goodworld 发表于 2020-3-7 21:58
一个字符串是通过首地址来表达出来的,而不是用值来表示的
也就是你要打印一串文本,你要提供的是字符串 ...
好的谢谢
页:
[1]