由于某些原因,第一个要打印的数字不遵守main函数中的for循环,告诉它的范围是0-10;但当

void printArray(int augArray[5])
{
    cout << *augArray;         //this line is taken out, the for loop proceeds with normal
    for (int i = 0; i < 5;)       //outputs, when the first line is kept also the for loop only
    {                                //produces 4 other numbers, just curious to why this is
        cout << augArray[i] << endl;     //happening, thanks.
        i++;
    }
}

int main()
{
    srand(time(0));
    int anArray[5];

    for(int j = 0; j < 5;)
    {
        anArray[j] = rand() % 11;
        j++;
    }

    printArray(anArray);
    cout << anArray;
}

最佳答案

当在表达式中使用数组名时,其后没有方括号,则其值等于指向数组初始元素的指针,即表达式中的augArray&augArray[0]相同。因此,*augArray*(&augArray[0])相同,只是augArray[0](星号和&符相互抵消)。

输出看起来很奇怪的原因是,您在打印*augArray之后没有放入行尾字符。您在输出中看到的“怪异数字”实际上是重复两次的数组的初始元素。

08-16 10:28