C语言 char str[ ]="ABCD",*p=str; 语句printf("%d尀n",*(p+4));输出结果为0,为什么?

2025-02-23 23:44:00
推荐回答(4个)
回答1:

char
str[]="ABCD";相当于写:char
str[5]={
'A','B','C','D',0
};
那么*(p+4)相当于p[4]或str[4]的值是0
这里运用了两个c语言的默认格式,一个是用str[]让编译器根据后知面赋值的字串自己统计应当申请的数组元素个数,另一个是用字符串"ABCD"的写法默道认是占用5个字符位置,包括ABCD四个字母和最后用来结束字符串的0

回答2:

因为输出的*(p+4)是字符串结束标志符'\0',其ASCII码为0.

回答3:

p+4即表示str[4]
你最大的索引才到str[3]
而在字符串后都有结束标识符的\0,
它的ASCII码值是0.编译器或许默认将str[4]
=
‘\0’

回答4:

你好!
p+4即表示str[4]
你最大的索引才到str[3]
而在字符串后都有结束标识符的\0,
它的ASCII码值是0.编译器或许默认将str[4]
=
‘\0’
如有疑问,请追问。