【发布时间】:2012-07-13 01:44:34
【问题描述】:
可能重复:
Passing an array as an argument in C++
Sizeof an array in the C programming language?
您能否解释一下以下代码的输出:
#include<iostream>
using namespace std;
void foo(int array[])
{
int size = sizeof(array) / sizeof(array[0]);
cout<<size<<endl;
}
int main()
{
int array[] = {1,2,3};
int size = sizeof(array) / sizeof(array[0]);
cout<<size<<endl;
foo(array);
return 0;
}
对应的输出是:
3
2
foo() 和 main() 里面的代码看起来和我很相似,以便产生相同的输出,但事实并非如此,你能解释一下吗为什么?
【问题讨论】:
-
ARhgh,糟糕的学习材料又来了。这里没有传递数组。
-
总结:每当您将数组作为参数传递时,您也需要传递长度。更好的是只使用
std::vector。