c语言 什么意思 看不懂 char str[]="abc尀0def尀0ghi",*p=str;

c语言 什么意思 看不懂char str[]="abc尀0def尀0ghi",*p=str; printf("%s",p+5);
2024-11-06 11:37:36
推荐回答(3个)
回答(1):

分析char str[]="abc\0def\0ghi",*p=str;这一句要拆开来看,它与下面的代码行等效:
char str[]="abc\0def\0ghi";
char *p;
p=str;
第一行:char str[]="abc\0def\0ghi"的意思是声明一个名为str的char型数组,并用字符串abc\0def\0ghi初始化(就是由编译器把这个字符串的字符一个接一个地存储到数组str中,并在最后加一个结束符'\0')。
第二行:char *p;就是声明一个指向char型变量的指针p(或叫char *型指针p)。
第三行:p=str;是将字符型数组str的第一个元素(就是a元素)的地址赋给char *型指针p。
这样,就可以通过指针p来操作数组str的内容了,比如printf("%c\n",p[1]);则会在屏幕上显示第二个字符c!

回答(2):

str是一个字符串数组
\0代表一个字符,要注意
p指向了str的第一个字符,p+5则是指向了第6个字符:也就是'e'
然后printf("%s", p+5)就是从p+5指向的字符开始输出,一直到遇到'\0'为止,所以最后的输出是 :ef

回答(3):

结果是def,因为p是str【】的首地址,p+5表示d的地址,而printf遇到‘\0’就结束