void input(int B[XAM][XAM])
{ int i,j,a;
for (i=0;i<3;i++) {
for (j=0; j<3; j++) {
scanf("%d",&B[i][j]);
}
}
for (i=0;i<3;i++) {
for (j=0; j<3; j++) {
printf("%d ",B[i][j]);
}
printf("\n");
}
}
void main()
{
#define XAM 3
int pilih,A[10],B[3][3],i,j;
input(&B[XAM][XAM]);
for (i=0;i<3;i++) {
for (j=0; j<3; j++) {
printf("%d ",B[i][j]);
}
printf("\n");
}
getch();
}
为什么当我尝试运行该程序时,我已经使用了“按引用传递”,但是当我调用 void main 的输出时,输出仍然与我从程序中输入的不一样, 但是如果我调用程序的输出,就没有问题 有人可以帮我为什么通过引用没有用吗? 谢谢
最佳答案
您正在使用 B 的 [3][3] 元素传递地址 (&):
&B[3][3]
随便写
input(B);
请注意,通过引用传递不是在调用函数时完成的,而是在定义时完成的,因此:
int foo(Foo& f);
在像foo(f);
一样简单地使用它时,将f
作为引用传递;
但是 int foo(Foo f);
在 Foo
不是指针的情况下(您的 B
是指针)将以编译错误结束,当尝试 foo(&f)
.
如果你在 B
定义中使用 XAM
常量也很好
B[3][3] -> B[XAM][XAM]
并在编译器中打开警告!
关于c++ - Visual C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23473110/