C语言中矩阵的不同表示
我作了以下声明: 实施1:C语言中矩阵的不同表示,c,matrix,attributes,C,Matrix,Attributes,我作了以下声明: 实施1: int m[3][3]; m[0][0] = 1; m[0][1] = 4; m[0][2] = 5; m[1][0] = 5; m[1][1] = 7; m[1][2] = 6; m[2][0] = 5; m[2][1] = 8; m[2][2] = 8; 实施2: int m[3][3]; int m = { {1,4,5}, {5,7,8}, {5,8,8}, }; 实现1工作得很好,但是实现2在我的代码中导致了错误的输出(太长
int m[3][3];
m[0][0] = 1;
m[0][1] = 4;
m[0][2] = 5;
m[1][0] = 5;
m[1][1] = 7;
m[1][2] = 6;
m[2][0] = 5;
m[2][1] = 8;
m[2][2] = 8;
实施2:
int m[3][3];
int m = {
{1,4,5},
{5,7,8},
{5,8,8},
};
实现1工作得很好,但是实现2在我的代码中导致了错误的输出(太长了,不能放在这里),我想使用2,因为它更紧凑。为什么我的输出结果不同?对于我来说,下面的代码工作得很好:
#include<stdio.h>
int main()
{
int m[3][3] = {
{1,4,5},
{5,7,8},
{5,8,8},
};
for(int i = 0; i<3; i++){
for(int j = 0; j<3; j++){
printf("%d \n",m[i][j]);
}
}
return 0;
}
输出是什么?请注意:实现2不能按原样工作,因为它定义了两次
m
。简化那些试图回答问题的人的工作。输出和预期输出请int m={….}
不工作,m
被声明为整数…如果我声明int m[3][3];如何将值放入矩阵后缀?@Pinteco:在实际代码中很少需要以这种方式重新初始化数组。如果一个程序中需要多组准备好的数据,通常最好定义多个数组并使用当前需要的数组,而不是将所有数据复制到一个数组中。然而,如果需要将一组准备好的值复制到一个数组中,可以使用memcpy(m,(int[3][3]){{1,4,5}、{5,7,8}、{5,8,8}、}、sizeof m)代码>。
1
4
5
5
7
8
5
8
8