显示数组结构 c++
Displaying an Array struct c++
问题是,当我尝试显示这个数组时,它 returns 我知道每个组件的内存方向。非常感谢,如果有人回答我很抱歉,但我找不到它。
已编辑
#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<<**new[i][j].Ar<<' ';它有效,但仅适用于每个 'vector' 的第一个组件,之后它打印零。
您正在使用名称 new
作为变量名,这将使您的代码行为与您预期的完全不同。
用别的东西。此外,Array
已经存在于 std::
中,因此这也是一个非常糟糕的选择。
我认为你的意思如下
#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
考虑到您可以在函数 print 中使用智能指针 std::unique_ptr
。
问题是,当我尝试显示这个数组时,它 returns 我知道每个组件的内存方向。非常感谢,如果有人回答我很抱歉,但我找不到它。
已编辑
#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<<**new[i][j].Ar<<' ';它有效,但仅适用于每个 'vector' 的第一个组件,之后它打印零。
您正在使用名称 new
作为变量名,这将使您的代码行为与您预期的完全不同。
用别的东西。此外,Array
已经存在于 std::
中,因此这也是一个非常糟糕的选择。
我认为你的意思如下
#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
考虑到您可以在函数 print 中使用智能指针 std::unique_ptr
。