将数组传递给函数只收到前两项(新手)

时间:2016-08-20 00:46:20

标签: c++ arrays

这肯定有一个非常简单的答案,但我无法解决。我刚刚创建了一个输出数组的简单函数,但它只输出数组的前两个值。我认为这与我将数组传递给函数的方式有关。

#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;
}

非常感谢!

1 个答案:

答案 0 :(得分:1)

数组变量被视为指针,因此sizeof(arrayOut)实际上返回指针arrayOut的大小,而不是数组的大小。在64位代码中,指针是8个字节。 sizeof(arrayOut[0])返回int的大小,即4个字节。所以你得到2。

当@ 0x499602D2在其注释中声明时,您需要将数组长度作为单独的参数传递。