我真的不明白为什么main中的函数和计算没有给出相同的答案。
[功能打印1,主打印中的计算8-正确的尺寸:
#include <stdio.h>
void size(const int a[]) {
printf("%i\n",sizeof(a) / sizeof(a[0]));
}
int main(void) {
int array[] = { 5, 2, 4, 6, 1, 7, 3, 3 };
printf("%i\n", (sizeof(array) / sizeof(array[0])));
size(array);
return 0;
}
由于array decay,该函数内的尺寸不正确。
您的数组在传递给函数时成为指针,sizeof(pointer) / sizeof(arr[0])
会给您1,因为在当前体系结构配置中,指针的大小为4个字节,整数的大小也为4个字节。
但是在主函数中处理原始数组时并非如此,因此在那里可以得到正确的输出。