【发布时间】:2011-02-14 12:30:03
【问题描述】:
如果我写
int main()
{
int a[100] = {1,2,3,4,};
cout<<sizeof(a)/sizeof(a[0])<<endl; //a is a pointer to the first elem of array,
//isn't it
return 0;
}
我得到 400!
如果我写
void func(int *a);
int main()
{
int a[100] = {1,2,3,4,};
func(a);
return 0;
}
void func(int *a)
{
cout<<sizeof(a)/sizeof(a[0])<<endl; //a is a pointer to the first elem of array
}
那么我得到 1!
那么为什么函数不知道数组大小呢?
【问题讨论】:
-
我没有得到这个问题。你在这两种情况下得到的输出不是一样吗?
-
这就是 C 和 C++ 的工作方式。你用的什么教科书没有解释这一点?
-
大概第二个“400”是一个错字,你会得到类似 2 或 1 的东西,具体取决于架构。
标签: c++ function pointers sizeof