数组的表示
The representation of the array
如果定义如下:
char x[] = "abcdefg";
char y[] = {'a','b','c','d','e','f','g'};
那为什么数组 x
不等于数组 y
?
当你手动创建数组时,你选择是否放置结束字符“\0”,但是当C编译器读取第二种创建数组的方式时,会自动添加结束字符,所以它是不同的,因为有不同的长度。
你也可以用下面的例子来测试,
#include <stdio.h>
int main(void) {
printf("%zu\n", sizeof(x));
printf("%zu\n", sizeof(y));
}
如果定义如下:
char x[] = "abcdefg";
char y[] = {'a','b','c','d','e','f','g'};
那为什么数组 x
不等于数组 y
?
当你手动创建数组时,你选择是否放置结束字符“\0”,但是当C编译器读取第二种创建数组的方式时,会自动添加结束字符,所以它是不同的,因为有不同的长度。
你也可以用下面的例子来测试,
#include <stdio.h>
int main(void) {
printf("%zu\n", sizeof(x));
printf("%zu\n", sizeof(y));
}