我正在使用普通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
谢谢!
答案 0 :(得分:1)
发生这种情况的原因是sizeof(m) == sizeof(char*)
,即您平台上的8
。
当您致电function(p)
时,p
会堕入指针并丢失其大小信息。
答案 1 :(得分:1)
数组在第一次有机会时会衰减到指针,因此在function
中你只有一个指针,在你的情况下就是8个字节。