我试图打印出一个多维数组,但它打印出奇怪的内存地址?

时间:2016-11-23 15:34:02

标签: c++ arrays

正如你所看到的,我正在尝试打印出一个2D数组,但它打印出奇怪的内存地址!有任何想法吗 !我是c ++的新手!

 #include <iostream>
#include <string>
#include <Windows.h>
#include <cstdlib>
#include <ctime>
void display(int array[2][10], int size);


void main() {
    SetConsoleTitleA("Random Number generator!");
    system("Color 3F");
    int Daniel[2][10] = { {20, 32, 43, 2, 5, 4, 3, 2 ,4 ,33}, {23, 54, 2, 5,3,3,6,3,65,3} };
    display(Daniel, 7);
}

void display(int array[2][10], int size) {
    for (int i = 0; i < size; i++) {
        std::cout << array[i] << std::endl;
        Sleep(1000);
    }
}

2 个答案:

答案 0 :(得分:1)

您的数组Daniel是二维数组,因此如果您尝试打印array[i],它会打印一个地址。如果要打印数组的内容,应该这样做:

void display(int array[2][10]) {
    for (int i = 0; i < 2; i++) {
        for(int j = 0; j < 10; j++)
            std::cout << array[i][j] << std::endl;
}

此外,您的main()函数应返回int而不是void,因此请将void main()更改为int main(),并将return 0;更改为它

答案 1 :(得分:1)

传递数组以及行数和列数:

#include <iostream>
void displayArray(int a[][10], size_t numRows, size_t numColumns)
{
    for (size_t i = 0; i < numRows; i++){
        for (size_t j = 0; j < numColumns; j++){
            std::cout << a[i][j] << ' ';
        }
        std::cout << std::endl;
    }
}

int main(){
    int Daniel[2][10] = { { 20, 32, 43, 2, 5, 4, 3, 2, 4, 33 }, { 23, 54, 2, 5, 3, 3, 6, 3, 65, 3 } };
    displayArray(Daniel, 2, 10);
    return 0;
}