我的代碼如下:爲什麼下面的C代碼編譯沒有錯誤?
void main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, " ");
getch();
closegraph();
}
雖然圖形模式(GMODE)的值尚未初始化,它的地址已經被傳遞到程序......它並沒有錯誤編譯!
傳遞變量的地址而不初始化該變量是否錯誤?
我的代碼如下:爲什麼下面的C代碼編譯沒有錯誤?
void main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, " ");
getch();
closegraph();
}
雖然圖形模式(GMODE)的值尚未初始化,它的地址已經被傳遞到程序......它並沒有錯誤編譯!
傳遞變量的地址而不初始化該變量是否錯誤?
首先,雖然您也標記了C++,但在上面的代碼中,參數的傳遞不是通過引用傳遞,而是通過值傳遞。
graphics mode(gmode) has not been initialized
其次,它應該不會給你一個錯誤,因爲它不是一個引用變量。
您傳遞gmode
的地址,而不是對它的引用。您無需初始化gmode
,因爲功能initgraph()
可能會這樣做。
雖然您可能會收到警告,具體取決於您使用的編譯器和編譯器選項。
現在我得到了答案......當我們編寫gdriver=DETECT
時,它返回的值爲 - gdriver
和gmode
。
這是因爲DETECT
是枚舉數據類型,它將gdriver
和gmode
映射到根據圖形驅動程序和模式值。這就是爲什麼我們在通過地址之前不需要初始化gmode
。
單獨的'void main'是錯誤的:http://stackoverflow.com/q/204476/1619294 –
您正在向函數傳遞一個_pointer_變量,並且指針不是未初始化的,它指向的是什麼至。 –
如果initgraph在任何人讀取之前寫入gmode,那麼錯誤在哪裏?現在問:編譯器如何看待'main'是否知道這是否爲真? – asveikau