簡體   English   中英

C語言中的main函數可以返回指針嗎?

[英]Can the function main in C return a pointer?

隨着標題的進行,主函數是否可以返回指針? 如果是,那么在哪里有用? 謝謝!

標准只接受int的返回類型:

5.1.2.2.1程序啟動

1在程序啟動時調用的函數稱為main。 該實現沒有為此函數聲明任何原型。 它應使用返回類型int且不帶參數來定義:

 int main(void) { /* ... */ } 

或帶有兩個參數(盡管可以使用任何名稱,但在此處稱為argc和argv,因為它們是聲明它們的函數的局部名稱):

 int main(int argc, char *argv[]) { /* ... */ } 

或等效; 10)或以其他一些實現定義的方式。


C11草案,2011年4月12日

其他一切都取決於您的編譯器,因此不再是C問題。

main()返回標准C中的int 。此返回值的解釋與周圍的運行時環境有關。 如果您確切地知道自己在做什么,那么在某種特殊情況下,您就知道環境將以某種方式解釋該值,那么您可以將指針轉換為int。 但這很討厭。

並且請注意,無論如何程序退出后,指向動態分配的內存的指針(可能)毫無意義! 僅將指針返回固定地址(例如在某些嵌入式環境中的硬件寄存器)才有意義。

完成phresnel的答案,並回答它是否有用:由於每個進程都有其自己的地址空間,即使您的main()返回一個將用作地址的整數值,自返回指針以來的關鍵點是什么僅與剛退出的進程的地址空間一致...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM