c++ - Visual C++ 错误

标签 c++

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/

相关文章:

c++ - 帮助 FFT(快速傅里叶变换)和/或 DSP

c++ - 消除可变类层次结构中无参数函数调用的歧义

c++ - 使用 Open CV 和 C++ 将彩色图像分成三个 channel ?

c++ - g++、 double 、优化和一个大 WTF

c++ - void *a = &a 如何合法?

c++ - Uncrustify:删除模板角度之间的空间不起作用

c++ - #define StrToInt StrToIntA 导致外部引用错误

c++ - 如何向 C++ 应用程序添加反射?

c++ - 向链表添加空格

c++ - 我可以将 _T() 宏与变量一起使用吗?