c lang-指针不同的数组长度

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"; 这是未定义的行为。数组

我自己的获取数组长度的函数有问题。 代码:

但是这个数组int a[]={5,4,1,2};-生产透镜=4-正常


为什么会这样

它失败,因为数组末尾没有
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";