c語言調用main函數
Ⅰ c語言main函數
//C語言由bell實驗室創立,但後續分支太多
//所以ISO(國際標准化組織)制定了統一標准
//目前通過的標准主要有3個C89C99C11
ASNSIX3.159-1989對應C89由ASNSI制定
ISO/IEC9899:1990還是C89,只是ISO從ASNSI那裡「抄襲」過來,又稱C90
ISO/IEC9899/AMD1:1995對於C89的補充,又稱C95
ISO/IEC9899:1999C99標准
ISO/IEC9899:2011C11標准
//關於main函數的標准在C89和C99又有差異
類型一,不指明返回類型
main(){return0;}
//這在C89中是合法的,因為不指明返回類型其實是隱含的告訴編譯器,這個函數返回類型是int
//這在C99中是非法的,因為C99要求顯式聲明所有函數
類型二,不書寫return...;在main函數中
intmain(void){}
//C89,函數返回值未定義
//C99,當main函數返回類型為int,且沒有寫return語句時,默認返回0
//C99,其他情況下,返回值未定義
類型三,定以返回值為非int
voidmain(void){return;}
//C89,非法(不bb,就是非法)
//C99,允許main函數返回類型由實現定義,支持void以及其他類型返回值
//所以你的編譯環境,不支持C99標准
//而你的書,比較「新」
//建議書寫標准宏編譯
#if__STDC_VERSION__>199901L//標准支持C99
voidmain(void)
#elifdefined__STDC__//支持標准C(89/99)
intmain(void)
#else//如果都不支持,我也很難受
#errorStandardCnotsupport
#endif
Ⅱ c語言中main函數中的函數怎麼調用函數
main函數中定義的函數只能在main函數中使用,如int f(int a);
調用只要f(x),其中x是你需要處理的數
Ⅲ 初學編程,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()函數嗎
一個main函數對應一個線程,對於操作系統而言,是可以多線程的,就好像你同時打開兩個應用程序一樣,而兩個線程之間要實現數據交流則要通過共享內存或者管道什麼的。所以簡單的理解是一個程序只能有一個線程或main函數,一個main函數里可以調用其他進程或者函數,而對於操作系統而言,沒有mian函數的概念,但是可以給每個線程分配cpu資源,各個線程同時運行,但不能相互調用,線程是相互獨立的。只能通過共享機制實現互相通信。
Ⅳ c語言 如何在main中調用函數
是這樣的,C語言在編譯時候是順序編譯的 ,也就是說,如果被調用的函數是在調用函數之前被聲明過,就可以通過編譯,反之就會報錯。
你這個有兩種解決方案,1,在程序最開始聲明所有函數 2,把float jian(float a;float b;)這函數所有內容放到main()前面
Ⅵ 關於C語言main函數的調用
在C語言中,main函數可被遞歸調用
在C++標准中,main函數不可以被遞歸調用
但是許多C++編譯器對標准作出了擴展,使得main函數可以被遞歸調用。
可以用Visual C++做個實驗
1)用/Tc編譯器選項(使用C編譯器),main可以遞歸調用
2)用/Tp(編譯C++)和/Ze(啟用語言擴展),main可以遞歸調用
3)用/Tp(編譯C++)和/Za(禁用語言擴展),
main不可以遞歸調用
另外,根據我的經驗,90%的C/C++書籍作者對C/C++並不是完全了解。只有看經典書籍才能在技術細節上沒有錯誤或模糊。
Ⅶ C語言main函數
我們用命令行時可以有很多選項參數,但main只有兩個參數,所以第二個參數是數組,命令行的多個參數就可存在數組中了。
Ⅷ C語言中,可不可以調用main函數
假如有一函數f, 沒有參數, 則要這樣調用:
f();
其中, f是函數f的函數名, 但對於編譯器來講, f是一個地址, 它指向了f函數代碼段的開頭部分.而()是一個運算符, 它非常類似於*, 但是*是取值的, 而()是讓程序跳轉到f處執行程序. 最後的那個分號就是標識著一個語句的結束
如果f有一個整型的參數, 那麼需要這樣調用:
f(1);
只是多了一個1, 這個1就是()運算符要復制到f函數的棧中了, 准確地說是復制到它的形參中.
如果f有多個參數, 則只需要在每個形參之間打上逗號:
f(1, 2, 3);
逗號只是用來起分隔作用.(由學區房拍賣提供)
Ⅸ C語言中的main()函數
一、定義
main函數,又稱主函數,是程序執行的起點,main是相對來說的,如同音學理論之主調於泛音,泛音即程序中的除main之外的其他函數,迎合人們的思考方式而生成的而非必定的模式.有主有次,執行起來條清縷析,既可將程序模塊化又實現了一個閉合的整體。
二、main()函數的形式
在最新的 C99 標准中,只有以下兩種定義方式是正確的:
int main(void) /*無參數形式*/
{
...
return 0;
}
int main(int argc, char *argv[]) /*帶參數形式*/
{
...
return 0;
}
int指明了main()函數的返回類型,函數名後面的圓括弧一般包含傳遞給函數的信息。void表示沒有給函數傳遞參數。
三、main()函數的返回值
從前面我們知道main()函數的返回值類型是int型的,而程序最後的 return 0; 正與之遙相呼應,0就是main()函數的返回值。那麼這個0返回到那裡呢?返回給操作系統,表示程序正常退出。
因為return語句通常寫在程序的最後,不管返回什麼值,只要到達這一步,說明程序已經運行完畢。而return的作用不僅在於返回一個值,還在於結束函數。
四、main()函數的參數
C編譯器允許main()函數沒有參數,或者有兩個參數(有些實現允許更多的參數,但這只是對標準的擴展)。這兩個參數,一個是int類型,一個是字元串類型。
第一個參數是命令行中的字元串數。按照慣例(但不是必須的),這個int參數被稱為argc(argument count)。第二個參數是一個指向字元串的指針數組。命令行中的每個字元串被存儲到內存中,並且分配一個指針指向它。
按照慣例,這個指針數組被稱為argv(argument value)。系統使用空格把各個字元串格開。一般情況下,把程序本身的名字賦值給argv[0],接著,把最後的第一個字元串賦給argv[1],等等。
(9)c語言調用main函數擴展閱讀
C++中的main函數的應用:
C++繼承了C語言的大部分特性,因此保留了「程序總是從main函數開始執行,且總是默認從main函數的return語句或結尾處結束運行」這一傳統,但是要注意,C++中的main函數要想作為程序執行的出入口,必須寫在全局(Global)范圍,不能寫成某個結構體或某個類的成員。
雖然main函數可以作為結構體或者類的成員函數,但相應地會失去作為程序出入口的功能。C++中全局main函數的書寫格式與C語言完全相同,功能也完全相同,且同一C++程序同樣只能有一個全局main函數。
Ⅹ 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**。