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

Size of array function return size of int instead of array

本文关键字:数组 int 函数 返回      更新时间:2023-10-16

输出总是 8!我想知道这个数字是从哪里来的,我怎样才能得到数组大小的正确大小,即 6?

#include <stdlib.h>
#include <stdio.h>
void cal(int a[])
{
    printf("the size of array is= %dn", (int)(sizeof(a)/(sizeof)(int)));
}
int main ()
{
    int lis[]={1,2,3,4,5,6,7,8,9};
    cal(&lis[3]);
    return 0;
}

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

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

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