[英]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.