下列
#include <iostream>
void printArraySize ( int * arr )
{
std::cout << sizeof(arr)/sizeof(int);
}
int main ()
{
int arr [] = {1, 2, 3, 69203};
printArraySize(arr);
return 0;
}
outputs 1
(证明:http://codepad.org/yKG3mZIz http://codepad.org/yKG3mZIz)。解释一下这个废话。数组进入函数后会忘记其大小吗?据我了解,传入arr
,一个内存地址,一个数字,只是意味着复制该数字。所以sizeof(arr)/sizeof(int)
在函数内部和外部应该意味着相同的事情。
In main
, arr
是一个数组并且sizeof
产生数组的大小。
In printArraySize
, arr
是一个指向int
and sizeof
产生指针的大小int
object.
在 C 中,不能(直接)将数组传递给函数,只能传递指向数组第一个元素的指针。获取数组的大小printArraySize
您需要将其作为参数显式传递给函数。
在 C++ 中,您可以通过引用传递 C 数组,但您不应该首先使用 C 数组,而应使用std::array
or std::vector
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)