当我运行以下程序时,我得到不同的数组大小。我以不同的方式累了,但结果是一样的,io 可能做错了什么?
#include<stdio.h>
void array_size(char *a[])
{
printf("Func Array Size: %d\n", sizeof(a));
}
int main()
{
char *str_array[]={"one", "two", "three"};
printf("Array Size: %d\n", (int)sizeof(str_array));
array_size(str_array);
return 0;
}
最佳答案
在函数main中,str_array
是一个包含三个char *
的数组。
函数array_size的参数a
只是一个指针。编译器在调用 array_size 时不会动态传递数组长度信息。
一个指针的大小不等于三个 char *
指针的大小。
关于c - 不同的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16215420/