显示数组struct c ++

时间:2015-01-11 18:08:15

标签: c++ multidimensional-array struct

问题是当我尝试显示这个数组时,它会返回每个组件的内存方向。非常感谢,如果答案得到解答,我很抱歉,但我找不到它 EDITED

 #include <stdio.h>
    #include <fstream>
    using namespace std;
    struct tabla{
        int Ar[9][9];
    };
    void print(){
        tabla matrix[9][9]={{1,2,3,4,5,6,7,8,9},
        {9,8,7,4,5,6,1,2,3},
        {7,3,2,1,5,6,4,8,9},
        {9,5,1,7,5,3,4,8,6},
        {7,4,1,8,5,2,9,6,3},
        {3,6,9,2,5,8,7,8,4},
        {0,1,4,7,2,5,8,8,7},
        {0,0,1,0,0,0,0,0,0},
        {1,1,1,1,1,1,1,1,1}};

        for(int i=0;i<9;i++){
            for(int j=0;j<9;j++){
                cout<<matrix[i][j].Ar<<' ';
            }
            cout<<endl;
        }
    }   `

    int main(){

        print();
        }

我尝试写作(因为我在许多地方读到这是由于指针) COUT&LT;&LT; **新[i] [j]&.Ar LT;&LT;” “;它只能用于每个'vector'的第一个组件,然后打印零。

2 个答案:

答案 0 :(得分:1)

我认为你的意思是以下内容

#include <iostream>

struct Array
{
    const static size_t N = 9;
    int Ar[N][N];
};

void print()
{
    Array *a = new Array 
    {
        {
            {1,2,3,4,5,6,7,8,9},
            {9,8,7,4,5,6,1,2,3},
            {7,3,2,1,5,6,4,8,9},
            {9,5,1,7,5,3,4,8,6},
            {7,4,1,8,5,2,9,6,3},
            {3,6,9,2,5,8,7,8,4},
            {0,1,4,7,2,5,8,8,7},
            {0,0,1,0,0,0,0,0,0},
            {1,1,1,1,1,1,1,1,1}
        }
    };

    for ( size_t i = 0; i < Array::N; i++ )
    {
        for ( size_t j = 0; j < Array::N; j++ )
        {
            std::cout << ( *a ).Ar[i][j] <<' ';
        }
        std::cout<< std::endl;
    }

    delete a;
}   


int main()
{
    print();
}

输出

1 2 3 4 5 6 7 8 9 
9 8 7 4 5 6 1 2 3 
7 3 2 1 5 6 4 8 9 
9 5 1 7 5 3 4 8 6 
7 4 1 8 5 2 9 6 3 
3 6 9 2 5 8 7 8 4 
0 1 4 7 2 5 8 8 7 
0 0 1 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 

考虑到您可以在功能打印中使用智能指针std::unique_ptr

答案 1 :(得分:-1)

您使用名称new作为变量名称,这将使您的代码与您可能期望的完全不同。 使用别的东西。此外,Array中已存在std::,因此这也是一个非常糟糕的选择。