数组函数的大小返回int而不是数组的大小

时间:2013-09-08 18:58:43

标签: c++ c arrays sizeof

输出总是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;
}

1 个答案:

答案 0 :(得分:0)

当你得到的只是一个int指针时,你无法计算int数组的大小。你将始终获得指针大小。

你可以尝试这个(不确定这是不是一个好主意): -

#define arrSz(a) (sizeof(a)/sizeof(*a))