问题是当我尝试显示这个数组时,它会返回每个组件的内存方向。非常感谢,如果答案得到解答,我很抱歉,但我找不到它 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'的第一个组件,然后打印零。
答案 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::
,因此这也是一个非常糟糕的选择。