函数中的数组大小

时间:2014-04-24 14:05:06

标签: c arrays function size

我正在使用普通C99中的一些数组,我需要知道它们的大小。有谁知道为什么会这样:

int function(char* m){
    return sizeof(m) / sizeof(m[0]);
}

int main(){
    char p[100];
    int s = sizeof(p) / sizeof(p[0]);
    printf("Size main: %d\nSize function: %d\n",s,function(p));
    return 0;
}

输出:

Size main: 100
Size function: 8

谢谢!

2 个答案:

答案 0 :(得分:1)

发生这种情况的原因是sizeof(m) == sizeof(char*),即您平台上的8

当您致电function(p)时,p会堕入指针并丢失其大小信息。

答案 1 :(得分:1)

数组在第一次有机会时会衰减到指针,因此在function中你只有一个指针,在你的情况下就是8个字节。