【发布时间】:2011-04-02 15:00:54
【问题描述】:
可能的重复:
C++: sizeof for array length
Sizeof array passed as parameter
#include "stdafx.h"
#include <iostream>
using namespace std;
void PrintArrayLength(int arr[])
{
cout << "Function Array length is: " << sizeof(arr)/sizeof(int) << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = {1, 2, 3};
cout << "Array length is: " << sizeof(arr)/sizeof(int) << endl; // print 3
PrintArrayLength(arr); // print 1
return 0;
}
为什么一个地方 sizeof(arr)/sizeof(int) 的值为 1,而另一个地方的值为 3?
【问题讨论】:
-
SO 上已经有很多重复项,例如Sizeof array passed as parameter
-
@PaulR:虽然确实有很多重复,但这不是其中之一。这个问题是关于指向动态分配的内存块的指针,而这个问题是关于按值传递数组的衰减指针行为。答案相同,但问题不同。
-
@Tomalak:你确定我们在看同一个问题吗?在最初得到一个糟糕的示例重复后,我确实更新了我的评论,但我认为 Sizeof array passed as parameter 肯定是一个有效的重复。无论哪种方式,都有很多可供选择。
-
@PaulR:我在看你的预编辑评论。
标签: c++