数组长度问题

Sou*_*abh 3 c sizeof

我正在阅读csc展示文件,其中我读了一个与c语言数组的sizeof()运算符相关的问题.答案是别的,然后我预料到它.

int DIMension(int array[]) {
   return sizeof(array )/ sizeof(int);
}

main() {
   int arr[10];
   printf(“Array dimension is %d”, DIMension(arr));
}
Run Code Online (Sandbox Code Playgroud)

用c语言编写的这个程序打印1作为答案.为什么会这样?

And*_*rey 8

因为int array[]它只是一个指针,它的大小是相同的int.我认为你希望arr以某种方式将大小传递给函数,但它不会那样工作.大小arr只能在声明它的同一范围内确定,因为sizeof实际上在编译时工作.


Tom*_*ych 6

数组作为指针传递.该函数无法知道为阵列分配了多少空间.