c lang-指针不同的数组长度
我自己的获取数组长度的函数有问题。 代码: 但是这个数组int a[]={5,4,1,2};-生产透镜=4-正常c lang-指针不同的数组长度,c,arrays,C,Arrays,我自己的获取数组长度的函数有问题。 代码: 但是这个数组int a[]={5,4,1,2};-生产透镜=4-正常 为什么会这样 它失败,因为数组末尾没有0。它不是自动添加的,您需要显式地添加。因此,您访问了数组外部,这会导致未定义的行为。事实上,你的一个测试似乎是成功的纯粹是运气,你不能依赖它 int a[] = {5, 4, 1, 2, 1, 0}; C自动添加空终止符的唯一时间是当您使用字符串文字来初始化char数组时,例如 char c[] = "abcde"; 这是未定义的行为。数组
为什么会这样 它失败,因为数组末尾没有
0
。它不是自动添加的,您需要显式地添加。因此,您访问了数组外部,这会导致未定义的行为。事实上,你的一个测试似乎是成功的纯粹是运气,你不能依赖它
int a[] = {5, 4, 1, 2, 1, 0};
C自动添加空终止符的唯一时间是当您使用字符串文字来初始化char
数组时,例如
char c[] = "abcde";
这是未定义的行为。数组没有空终止符。C字符串是数组。但这不是双射:数组不是C字符串。
int a[] = {5, 4, 1, 2, 1, 0};
char c[] = "abcde";