main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個(gè)參數(shù)可以認(rèn)為是 main函數(shù)的形式參數(shù)。

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元橋東做網(wǎng)站,已為上家服務(wù),為橋東各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
C語言規(guī)定main函數(shù)的參數(shù)只能有兩個(gè),還規(guī)定argc(第一個(gè)形參)必須是整型變量,argv( 第二個(gè)形參)必須是指向字符串的指針數(shù)組。加上形參說明后,main函數(shù)的函數(shù)頭應(yīng)寫為:
int main (int argc,char *argv[])
由于main函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序內(nèi)部取得實(shí)際值。那么,在何處把實(shí)參值賦予main函數(shù)的形參呢? 實(shí)際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當(dāng)我們要運(yùn)行一個(gè)可執(zhí)行文件時(shí),在DOS提示符下鍵入文件名,再輸入實(shí)際參數(shù)即可把這些實(shí)參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\可執(zhí)行文件名 參數(shù) 參數(shù)……
以下以 C 語言為例,其余語言與之有類似之處:
A function is uniquely represented by a name and a set of operand types.
Its operands, referred to as parameters, are specified in a
comma-separated list enclosed in parentheses. The actions that the
function performs are specified in a block, referred to as the function
body. Every function has an associated return type.
函數(shù)由函數(shù)名以及一組操作數(shù)類型唯一地表示。函數(shù)的操作數(shù),也即形參,在一對(duì)圓括號(hào)中聲明,形參與形參之間以逗號(hào)分隔。函數(shù)執(zhí)行的運(yùn)算在一個(gè)稱為函數(shù)體的塊語句中定義。每一個(gè)函數(shù)都有一個(gè)相關(guān)聯(lián)的返回類型。
As an example, we could write the following function to find the greatest common divisor of two ints:
考慮下面的例子,這個(gè)函數(shù)用來求出兩個(gè) int 型數(shù)的最大公約數(shù):
// return the greatest common divisor
int gcd(int v1, int v2)
{
while (v2) {
int temp = v2;
v2 = v1 % v2;
v1 = temp;
}
return v1;
}
Here
we define a function named gcd that returns an int and has two int
parameters. To call gcd, we must supply two int values and we get an int
in return.
這里,定義了一個(gè)名為 gcd 的函數(shù),該函數(shù)返回一個(gè) int 型值,并帶有兩個(gè) int 型形參。調(diào)用 gcd 函數(shù)時(shí),必須提供兩個(gè) int 型值傳遞給函數(shù),然后將得到一個(gè) int 型的返回值。
————C++ Primer 4th Edition
可以將形參理解為入口參數(shù),返回值理解為出口參數(shù)
話說,現(xiàn)在應(yīng)該基本上不使用“入口參數(shù)”/“出口參數(shù)”這樣的說法了吧
函數(shù)的參數(shù)分為形參和實(shí)參兩種。
形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用。
形參和實(shí)參的功能是作數(shù)據(jù)傳送,發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。
舉個(gè)例子:
定義一個(gè)函數(shù)s=f(a,b),功能是將a和b的差賦值給s,那么,a和b就是這個(gè)函數(shù)的兩個(gè)參數(shù)。
擴(kuò)展資料:
C語言的參數(shù)傳遞方式
方法有3種方式:值傳遞、地址傳遞、引用傳遞
tips:
被調(diào)用函數(shù)的形參只有函數(shù)被調(diào)用時(shí)才會(huì)臨時(shí)分配存儲(chǔ)單元,一旦調(diào)用結(jié)束占用的內(nèi)存便會(huì)被釋放
值傳遞和地址傳遞,傳遞的都是實(shí)參的一個(gè)拷貝
C語言中實(shí)參和形參之間的數(shù)據(jù)傳遞是單向的“值傳遞”,單向傳遞,只能由實(shí)參傳給形參,反之不行
輸出格式并沒有選擇%p而是選擇了%d,因?yàn)槭M(jìn)制的數(shù)看起來更直觀。
值傳遞
如果只是傳遞值的話:
#include stdio.h
//值傳遞傳值
void swap( int x, int y);
int main()
{
int a=2,b=3;
printf("before:實(shí)參為a,b\na=%d,地址為%d\nb=%d,地址為%d\n\n",a,a,b,b);
swap(a,b);
printf("after:實(shí)參為a,b\na=%d,地址為%d\nb=%d,地址為%d\n\n",a,a,b,b);
return 0;
}
void swap(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("inside:形參為x,y\nx=%d,地址為%d\ny=%d,地址為%d\n\n",x,x,y,y);
}
我是計(jì)算機(jī)專業(yè)的,當(dāng)初學(xué)c語言的時(shí)候也是好為難,也有一些心得體會(huì)
語言這種東西會(huì)隨著接觸的多就自然全都通了,需要時(shí)間,慢慢來,看到你問的這些問題跟我當(dāng)初好像,感覺你學(xué)的支離破散,我建議你要系統(tǒng)的學(xué)c語言,
我有一個(gè)c語言的教程,txt的,我可以發(fā)給你,看看很有幫助,你問這些問題,即使通了也是不透徹
函數(shù)中包含了程序的可執(zhí)行代碼。每個(gè)C程序的入口和出口都位于函數(shù)main()之中。main()函數(shù)可以調(diào)用其他函數(shù),這些函數(shù)執(zhí)行完畢后程序的控制又返回到main()函數(shù)中,main()函數(shù)不能被別的函數(shù)所調(diào)用。通常我們把這些被調(diào)用的函數(shù)稱為下層(lower-level)函數(shù)。函數(shù)調(diào)用發(fā)生時(shí),立即執(zhí)行被調(diào)用的函數(shù),而調(diào)用者則進(jìn)入等待狀態(tài),直到被調(diào)用函數(shù)執(zhí)行完畢。函數(shù)可以有參數(shù)和返回值。
程序員一般把函數(shù)當(dāng)作“黑箱”處理,并不關(guān)心它內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。當(dāng)然程序員也可以自己開發(fā)函數(shù)庫。
說明一點(diǎn),函數(shù)這一節(jié)很重要,可以說一個(gè)程序的優(yōu)劣集中體現(xiàn)在函數(shù)上。如果函數(shù)使用的恰當(dāng),可以讓程序看起來有條理,容易看懂。如果函數(shù)使用的亂七八糟,或者是沒有使用函數(shù),程序就會(huì)顯得很亂,不僅讓別人無法查看,就連自己也容易暈頭轉(zhuǎn)向。可以這樣說,如果超過100行的程序中沒有使用函數(shù),那么這個(gè)程序一定很羅嗦(有些絕對(duì),但也是事實(shí))。
一、函數(shù)的定義
一個(gè)函數(shù)包括函數(shù)頭和語句體兩部分。
函數(shù)頭由下列三不分組成:
函數(shù)返回值類型
函數(shù)名
參數(shù)表
一個(gè)完整的函數(shù)應(yīng)該是這樣的:
函數(shù)返回值類型 函數(shù)名(參數(shù)表)
{
語句體;
}
函數(shù)返回值類型可以是前面說到的某個(gè)數(shù)據(jù)類型、或者是某個(gè)數(shù)據(jù)類型的指針、指向結(jié)構(gòu)的指針、指向數(shù)組的指針。指針概念到以后再介紹。
函數(shù)名在程序中必須是唯一的,它也遵循標(biāo)識(shí)符命名規(guī)則。
參數(shù)表可以沒有也可以有多個(gè),在函數(shù)調(diào)用的時(shí)候,實(shí)際參數(shù)將被拷貝到這些變量中。語句體包括局部變量的聲明和可執(zhí)行代碼。
我們?cè)谇懊嫫鋵?shí)已經(jīng)接觸過函數(shù)了,如abs(),sqrt(),我們并不知道它的內(nèi)部是什么,我們只要會(huì)使用它即可。
這一節(jié)主要講解無參數(shù)無返回值的函數(shù)調(diào)用。
內(nèi)存角度來看,函數(shù)的參數(shù)是要入棧的,棧區(qū)大小決定了參數(shù)的個(gè)數(shù)。一般C語言程序運(yùn)行時(shí)默認(rèn)1M的棧空間,以int類型的參數(shù)來看,1M=1024KB=1024*1024字節(jié),32位系統(tǒng)中int類型占4個(gè)字節(jié),所以理論上一個(gè)函數(shù)最多有262144個(gè)int類型的參數(shù)。實(shí)際中要遠(yuǎn)遠(yuǎn)小于這個(gè)數(shù),因?yàn)閼?yīng)用程序中的局部變量都需要占用棧空間。
c語言的主函數(shù),main最多是兩個(gè)參數(shù)
int
argc;
char
**
argv;
其中argc表示,傳入?yún)?shù)的字符串個(gè)數(shù),argv表示參數(shù)中的各個(gè)字符串。
網(wǎng)頁名稱:c語言函數(shù)入?yún)⒅С值膮?shù),c語言中函數(shù)的參數(shù)
網(wǎng)站地址:http://chinadenli.net/article1/dsehdod.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、面包屑導(dǎo)航、ChatGPT、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)