<分区>
Possible Duplicate:
Sizeof array passed as parameter
给定以下代码,我当前使用的系统(考虑到指针的大小,它似乎是 64 位的)打印:
32
4
现在,在这个系统上 int 的大小应该是 4 个字节,所以 8*4 = 32 是有意义的。另外,我知道指针的大小也应该是 4 个字节,这就是我猜测 foo 中的数组正在发生的情况。
我的问题是,为什么 foo 函数中的 sizeof(arr) 与 main() 中的 sizeof(myarray) 的处理方式不同,而两者都是特定的 int[8] 数组?我曾预计在这两种情况下都会收到 32,这让我感到困惑,为什么它会以其他方式结束。
#include <iostream>
void foo(int arr[8])
{
std::cerr << sizeof(arr) << std::endl;
}
int main()
{
int myarray[8];
std::cerr << sizeof(myarray) << std::endl
foo(myarray);
}