如何在C中获取array []的长度?

时间:2015-05-05 09:03:44

标签: c

int mid_square(int z[],int length){
    int i,cnt=3,sum=0;

    if (length%2 == 0) { //even length
        length = (length+1)/2;
    }
    else{ //odd length
        length = length / 2;
    }

    for (i=length-2; i<=length+1; i++) {
        sum+=z[i]*pow(10, cnt);
        cnt--;
    }
    return sum;
}

在此代码中,我使用长度作为函数的局部变量
但我不想使用变长 我该怎么办? 在我使用 length = sizeof(z)/ 4 之前,但长度始终是相同的值。 (4 ?? 8 ??我不记得了)

1 个答案:

答案 0 :(得分:1)

一旦数组作为参数传递给函数,它就会在调用期间衰减到指针,因此无法知道函数中数组的大小,并且必须有一个额外的参数来指定数组的大小

因此函数中的sizeof(z)会为您提供sizeof(pointer)而非sizeof(array)