當前位置:首頁 » 編程語言 » c語言從main函數

c語言從main函數

發布時間: 2022-12-07 03:12:51

⑴ 在c語言中,main函數的意義是什麼

主函數main()是一個c語言程序開始運行的標志,也就是說,一程序開始執行都是從主函數開始的,不管主函數的位置在哪裡。

⑵ c語言main函數的位置是什麼

C語言中main函數可以在任意位置。

每一個C語言程序有且只有一個主函數(main()),且程序必須從main()函數開始,它是程序開始時調用的第一個函數。函數定義形式:【int main(void){}】。

C語言規定,在一個C程序中,main()函數可以在任意位置。

解析:

每個C程序有且只有一個主函數(main),且程序必須從main()函數開始執行,而且main()函數可以放在程序中的任意位置。

詳細介紹:

在宿主環境中編譯的C程序必須定義一個名為main的函數,這是程序開始時調用的第一個函數。

main()函數的定義有以下兩種形式:

(1)函數沒有參數,返回值為int類型。int main( void ) { /*…*/ }.

(2)函數有兩個參數,類型分別是int和char**,返回值是int類型。int main( int argc, char *argv ) { /*…*/ }.

這兩種定義方式都符合C語言標准。除此之外,許多C的實現版本還支持第三種、非標准語法的定義方式:int main( int argc, char *argv, char *envp ) { /*…*/ }.

函數返回值是int,有3個參數:第一個是int,另外兩個是char**。

⑶ C語言中總是從main函數開始執行,那執行好main函數後,是按照從上到下的順序執行嗎

進入程序後,就開始找main函數,可能是int main也可能是void main等。
然後可能遇到判斷、循環、分支結構,然後按各自的語法分別執行,還可能遇到被調函數,到了那裡就再去執行被調函數,執行完被調函數就再回來。
直到main函數全部執行完畢,直到最後一行結束,然後程序退出,運行界面出現perss any key to continue。
順序就是從上到下。遇到一些結構遵循結構的語法進行,但是整體順序就是由上到下。

⑷ C語言main函數

我們用命令行時可以有很多選項參數,但main只有兩個參數,所以第二個參數是數組,命令行的多個參數就可存在數組中了。

⑸ C語言中總是從main函數開始執行,那執行好main函數後,是按照從上到下的順序執行嗎

C語言中總是從main函數開始執行,執行好main函數後,是按照從上到下的順序執行的。

遇到一些結構遵循結構的語法進行,但是整體順序就是由上到下。

⑹ 初學編程,C語言中的main函數

考慮到main函數的特殊性,lz不明白這個問題可以理解。
main()是省略了返回值類型,C語言會默認認為成main的類型為int,在main()的函數體內要返回一個值,如return 0;
而void main()的返回值是void類型,也就是說沒有返回值。這樣在main()的函數體內你就不用寫return 0;或者return 1;之類的返回語句。
在一個程序中,可以說你看不出兩者的差別,因為main()是C語言的入口點,入口點如果返回了程序也就結束了,因此C語言的這個特性似乎沒用。可沒用的話,C語言的設計者為什麼要這么做呢?!肯定有用。
沒錯,前面我說的是在一個程序中,它似乎沒用。可如果一個程序prog2調用另一個程序prog1的話(這里指的是prog2直接調用prog1編譯好的可執行文件),那麼這個特性就有用了。因為prog2要知道prog1運行之後的狀態。比如你用C寫了一個刪除文件的程序(暫且命名為delf),然後用另一個程序去調用delf,那麼調用結果怎麼樣啊?這個文件是否刪掉了?這是int main()就會派上用場了。C語言中默認的main如果返回為0,那麼這個程序調用就成功了,其他值,則為不同的錯誤代碼。在你的delf程序中,如果那個文件刪除成功,那麼就在int main()中返回0,其他調用delf的程序就知道,噢,這個操作成功了。
在unix/linux系統中的很多命令都是通過這種方式獲得運行結果的。

關於譚浩強的書,我想不用多說,發行量說明了一切。畢竟第二版在編寫的時候還比較早,而第三版根據很多現在的需要進行了改寫,內容當然會好些。鑒於lz是初學C,其實大可不必在這個問題上浪費太多時間,當你有了更多的項目經驗,對這個問題會有更深刻的理解。
上面我已經給出了main()、int main()和void main()的區別,但建議lz忽略這個差別,認為成二者一樣,先把C的其他部分學好。至於只寫成main(),我並不推薦,就算編譯器通過了,這種編程的風格也太不嚴謹,不利於好的習慣的養成。

⑺ C程序必須從main()函數開始執行

這是在面試中被問到的一個問題,回答了是。這問題第一感覺答案就是否定的,一時也沒想出來理由只能回答了是。當時太緊張了,其實回想一下匯編語言就該想到程序的入口地址是可以指定的,c語言編譯器默認以main作為入口地址。

網上查閱後,發現了 __attribute__ 這個關鍵字,它可以設置函數屬性,變數屬性,類型屬性。

1、前言

最近看到一份代碼,看到一個函數前面用__attribute__((destructor))修飾,當時感覺有點怪怪的,搜了整個程序,也沒發現哪個地方調用這個函數。於是從字面意思猜想,該函數會在程序結束後自動調用,與C++中的析構函數類似。第一次接觸GNU下的attribute,總結一下。

2、__attribute__介紹

__attribute__可以設置函數屬性(Function Attribute)、變數屬性(Variable Attribute)和類型屬性(Type Attribute)。__attribute__前後都有兩個下劃線,並且後面會緊跟一對原括弧,括弧裡面是相應的__attribute__參數

__attribute__語法格式為:__attribute__ ( ( attribute-list ) )

若函數被設定為constructor屬性,則該函數會在main()函數執行之前被自動的執行。類似的,若函數被設定為destructor屬性,則該函數會在main()函數執行之後或者exit()被調用後被自動的執行。例如下面的程序:

看下面的例子:

// gcc 編譯器#include<stdio.h>__attribute__((constructor)) void before_main(){ printf("%s ",__FUNCTION__);}__attribute__((destructor)) void after_main(){ printf("%s ",__FUNCTION__);}int main(){ printf("%s ",__FUNCTION__); return 0;}

輸出結果為:before_main

main

after_main

可以看到上面的程序並不是從main函數開始執行的。constructor 設置在main前面執行,destructor 設置在main之後執行。

熱點內容
阿里雲伺服器能搭美國站點 發布:2025-01-20 01:49:34 瀏覽:276
安卓手機壁紙如何更換成動態壁紙 發布:2025-01-20 01:40:27 瀏覽:705
安卓微信簽名在哪裡修改 發布:2025-01-20 01:25:31 瀏覽:109
安卓電腦管家怎麼恢復出廠設置 發布:2025-01-20 01:24:06 瀏覽:313
qt編譯sqlite庫 發布:2025-01-20 01:22:30 瀏覽:525
360攝像頭存儲設置 發布:2025-01-20 01:16:01 瀏覽:538
js防緩存 發布:2025-01-20 01:15:47 瀏覽:495
編程生日卡 發布:2025-01-20 01:15:14 瀏覽:206
android備忘錄源碼 發布:2025-01-20 01:06:32 瀏覽:455
怎麼禁用aspx緩存 發布:2025-01-20 01:00:50 瀏覽:688