【发布时间】:2021-04-10 00:04:09
【问题描述】:
当我在main() 函数中使用此代码时,数组的大小(或长度)计算正确:
#include <stdio.h>
int main(void)
{
int arr[] = {2, 5, 9, 8, 4, 5, 1, 2, 8, 5};
int length = sizeof(arr) / sizeof(arr[0]);
printf("The number of elements in the array is %d\n", length);
return 0;
}
输出:
The number of elements in the array is 10
但是当我使用函数做同样的事情时,输出是错误的:
#include <stdio.h>
int sizeTeller(int array[]);
int main(void)
{
int arr[] = {2, 5, 9, 8, 4, 5, 1, 2, 8, 5};
printf("The number of elements in the array is %d\n", sizeTeller(arr));
return 0;
}
int sizeTeller(int array[])
{
int len;
return (len = sizeof(array) / sizeof(array[0]));
}
输出:
The number of elements in the array is 2
您能否向我解释一下为什么会这样?我更喜欢将所有代码保留在函数中,这就是为什么我在这里尝试相同但输出出错的原因。
【问题讨论】:
标签: arrays c function pointers sizeof