【发布时间】:2015-04-24 12:40:20
【问题描述】:
当将数组传递给函数并在函数中使用 sizeof() 时,它只返回单个元素的大小 (4)。有没有办法来解决这个问题?而且我仅限于使用数组,而不是向量/模板。
void arraysize(int arr[]){
cout << sizeof(arr) << endl;
}
int main(){
int a[15];
arraysize(a); //4
cout << sizeof(a) << endl; //60
}
输出:
4
60
【问题讨论】:
-
问题在于函数签名调整为
void arraysize(int* arr),所以arr实际上是指向int的指针。 SO上有很多关于这个主题的问题。 -
您不能将数组直接传递给 C++ 中的函数。
-
@immibis 请注意,这是 C++。您不能按值传递,但可以将引用/指针传递给数组。
-
@juachopanza 是的,但是将引用/指针传递给数组并不是传递数组。
-
@immibis 为什么不呢?有人可能会争辩说按值传递也不是传递数组。