对不起,我是c的新手,我试图通过引用将此矩阵传递给一个程序 所以我不必将其复制到内存中。我找不到任何解释。这是我能得到的最接近的但是不起作用。 该计划的目的只是为了这个,我做了它来测试它。
#include <stdio.h>
typedef int tmatrix[5][5];
void print (tmatrix*mtr)
{
int l , m;
l=0;
while (l<=4)
{
m=0;
while (m<=4)
{
printf("%d", *mtr[l][m]);
m = m+1;
}
printf("\n");
l=l+1;
}
}
//-----------------------------------
int main()
{
int i , j;
tmatrix matrix;
i=0;
while (i <= 4)
{
j=0;
while (j<=4)
{
matrix[i][j] = 3;
j = j+1;
}
i = i+1;
}
print(&matrix);
return 0;
}
应该打印:
33333
33333
33333
33333
33333
但它打印出来:
33333
54198992041990930
1977890592-1961670060002752492
03232520
664-21479789407743168
我知道它可能与指针有关,因为我认为这些是地址,但我没有线索。
答案 0 :(得分:3)
printf
也将更改为直接访问它。 *mtr[l][m] --> mtr[l][m]
print(&matrix) --> print(matrix)
修改后的代码如下。
#include <stdio.h>
typedef int tmatrix[5][5];
void print (tmatrix mtr)
{
int l , m;
l=0;
while (l<=4)
{
m=0;
while (m<=4)
{
printf("%d", mtr[l][m]);
m = m+1;
}
printf("\n");
l=l+1;
}
}
//-----------------------------------
int main()
{
int i , j;
tmatrix matrix;
i=0;
while (i <= 4)
{
j=0;
while (j<=4)
{
matrix[i][j] = 3;
j = j+1;
}
i = i+1;
}
print(matrix);
return 0;
}