在 C
中,数组元素被视为指针。所以表达式 sizeof(arr)/sizeof(arr[0])
变成 sizeof(int *)/sizeof(int)
结果是 1
那么为什么下面的程序输出的是 12 11
。
#include <stdio.h>
int main()
{
int n1, n2;
char arr1[] = "Hello World";
char arr2[] = {'H','e','l','l','o',' ','W','o','r','l','d'};
n1 = sizeof(arr1)/sizeof(arr1[0]);
n2 = sizeof(arr2)/sizeof(arr2[0]);
printf("n1 = %d\nn2 = %d\n", n1, n2);
return 0;
}
最佳答案
array elements are treated as pointers
这不是真的。数组不是指针。但是当传递给函数时,它们会衰减为指向第一个元素的指针。而sizeof(array)
是整个数组占用的字节数。
关于c - C 中的 sizeof 数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490684/