c++ 中数组类型数据作为 function 参数时的注意事项
关于 function 的基础教程参考:C++ 入门教程之四 -- Functions
当 function 的传入参数为数组时,如果我们想要得到数组元素个数可能会这样写:
void testFunc(int arr[]) {
int count = sizeof(arr)/sizeof(arr[0]);
}
int main()
{
int arr[] = {1, 3, 6, 8};
cout << testFunc(arr) << endl;
return 0;
}
sizeof function 可以返回数据占用内存空间的大小。所以用整个 arr 大小除以第一个元素大小可以得到数组元素个数。
但是测试会发现以上得到的 count 值并不是 arr 数组元素个数 4 而是 2。这是因为当 function 传入数组数据时,会自动将其转换为 pointer 指针类型。这时候使用 sizeof()
得到的不是 arr 数据所在地址的内存大小,而是这个指向 arr 数组的指针所占用内存大小。