我的代码如下:
void main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, " ");
getch();
closegraph();
}
虽然图形模式(gmode)的值尚未初始化,但它的地址已经传递给程序......并且编译时没有错误!
在没有初始化该变量的情况下传递变量的地址是不错的?
答案 0 :(得分:2)
您传递了gmode
的地址,而不是对它的引用。您无需初始化gmode
,因为函数initgraph()
可能会这样做。
您可能会收到警告,具体取决于您使用的编译器和编译器选项。
答案 1 :(得分:0)
首先,虽然你也标记了C ++,但在上面的代码中,参数的传递不是通过引用传递,而是传递值。
graphics mode(gmode) has not been initialized
其次,它不应该给你一个错误,因为它不是一个引用变量。
答案 2 :(得分:0)
现在我得到了答案......当我们写gdriver=DETECT
时,它会为gdriver
和gmode
返回两者的值。
这是因为DETECT
是枚举数据类型,它将gdriver
和gmode
映射到相应的图形驱动程序和模式值。这就是我们在传递地址之前不需要初始化gmode
的原因。