【发布时间】:2016-09-15 21:38:33
【问题描述】:
对不起,我是 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
我知道这可能与指针有关,因为我认为这些是地址,但我没有任何线索。
【问题讨论】:
-
表达式
*mtr[l][m]并没有像你想象的那样做,因为 operator precedence。 -
您还必须记住,数组自然会衰减为指向其第一个元素的指针,因此无需通过引用传递数组(或者更确切地说 emulate 通过引用传递,因为 C没有)。
-
非常感谢你们,我已经坚持了好几个小时了。
标签: c