输出总是8!我想知道这个数字来自哪里,我怎样才能得到正确大小的数组大小为6?
#include <stdlib.h>
#include <stdio.h>
void cal(int a[])
{
printf("the size of array is= %d\n", (int)(sizeof(a)/(sizeof)(int)));
}
int main ()
{
int lis[]={1,2,3,4,5,6,7,8,9};
cal(&lis[3]);
return 0;
}
答案 0 :(得分:0)
当你得到的只是一个int指针时,你无法计算int数组的大小。你将始终获得指针大小。
你可以尝试这个(不确定这是不是一个好主意): -
#define arrSz(a) (sizeof(a)/sizeof(*a))