这肯定有一个非常简单的答案,但我无法解决。我刚刚创建了一个输出数组的简单函数,但它只输出数组的前两个值。我认为这与我将数组传递给函数的方式有关。
#include <iostream>
using namespace std;
void outputArray(int arrayOut[]){
int size = sizeof(arrayOut)/sizeof(arrayOut[0]);//size is only 2??
cout << "{";
for(int i = 0; i < size; i++){
cout << arrayOut[i];
if(i != size-1){
cout << ", ";
}
}
cout << "}";
}
int main(){
int myArr[6] = {0, 1, 2, 3, 4, 5};
outputArray(myArr);
return 0;
}
非常感谢!
答案 0 :(得分:1)
数组变量被视为指针,因此sizeof(arrayOut)
实际上返回指针arrayOut
的大小,而不是数组的大小。在64位代码中,指针是8个字节。 sizeof(arrayOut[0])
返回int
的大小,即4个字节。所以你得到2。
当@ 0x499602D2在其注释中声明时,您需要将数组长度作为单独的参数传递。