【发布时间】:2018-07-17 08:59:11
【问题描述】:
有两个数组:
char a[] = "Nice you!";
char b[] = {'N', 'i', 'c', 'e', ' ', 'y', 'o', 'u', '!'};
我认为a[] 和b[] 完全一样。所以这是我的代码,看看每个数组的最后一个元素之后是什么:
#include <stdio.h>
int main(void)
{
char a[] = "Nice you!";
char b[] = {'N', 'i', 'c', 'e', ' ', 'y', 'o', 'u', '!'};
char *pa;
char *pb;
pa = a;
pb = b;
printf("*(pa + 9)= %d\n", *(pa + 9));
printf("*(pb + 9)= %d\n", *(pb + 9));
return 0;
}
我的理解正确吗?我不太确定,需要确认。
【问题讨论】:
-
a以零字符结尾,因此比b长一个字符。 -
通常,
*(pa + 9)使用数组索引表示法编写:pa[9]。 -
*(pb+9)是未定义的行为,所以无论你得到什么输出都是没有意义的。