为什么返回长度为8 ??
#include <stdio.h>
int getLength(char arr[]) {
return sizeof(arr) / sizeof(arr[0]);
}
char text[] = "1234567890123456789";
int main (void) {
int i;
int e=getLength(text);
printf("%d\n",e);
for (i = 0; i < e; i++) {
printf("%c\n", text[i]);
}
return 0;
}
答案 0 :(得分:2)
因为当您将数组作为参数传递时,它会衰减为指针。所以sizeof(arr)
产生指针的大小(在你的架构上是8个字节),而不是数组的整个大小。
答案 1 :(得分:-2)
因为sizeof(array)
会给你数组指针的大小而不是数组本身的实际大小。