無參函數(shù),是指在主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時(shí),主調(diào)函數(shù)不向被調(diào)函數(shù)傳遞數(shù)據(jù)。無參函數(shù)一般用來執(zhí)行特定的功能,可以有返回值,也可以沒有返回值,但一般以沒有返回值居多。
10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有博愛免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
有參函數(shù),是指在主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時(shí),主調(diào)函數(shù)通過參數(shù)向被調(diào)函數(shù)傳遞數(shù)據(jù)。在一般情況下,有參函數(shù)在執(zhí)行被調(diào)函數(shù)時(shí)會(huì)得到一個(gè)值并返回給主調(diào)函數(shù)使用。
擴(kuò)展資料
1、定義有參函數(shù)的一般形式為:
函數(shù)類型 函數(shù)名(參數(shù)類型1 參數(shù)名1, 參數(shù)類型2 參數(shù)名2, …, 參數(shù)類型n 參數(shù)名n)
{
聲明部分
語句部分
}
2、有參函數(shù)使用注意事項(xiàng):
(1)在定義函數(shù)時(shí),必須要指定形參的類型。實(shí)參與形參的個(gè)數(shù)必須相等,若不相等就是語法錯(cuò)誤。此外,實(shí)參與形參的類型要相同或賦值兼容。最好是相同,這樣不容易出錯(cuò)。如果不相同則實(shí)參按形參的類型轉(zhuǎn)化,然后再送給形參。
(2)在傳遞數(shù)據(jù)時(shí),實(shí)參與形參是按順序一一對(duì)應(yīng)的。
void表示參數(shù)為空,即這個(gè)函數(shù)不含參數(shù),比如定義一個(gè)print函數(shù)。
程序執(zhí)行總是從main函數(shù)開始,如果有有其他函數(shù),則完成對(duì)其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由main函數(shù)結(jié)束整個(gè)程序。在執(zhí)行程序時(shí),由系統(tǒng)調(diào)用main函數(shù)。main 函數(shù)是在程序啟動(dòng)中完成對(duì)具有靜態(tài)存儲(chǔ)期的非局部對(duì)象的初始化之后被調(diào)用的。它是程序在有宿主 (hosted)環(huán)境(亦即有操作系統(tǒng))中所指定的入口點(diǎn)。自立程序(啟動(dòng)加載器,操作系統(tǒng)內(nèi)核,等等)的入口點(diǎn)則是由實(shí)現(xiàn)定義的。
擴(kuò)展資料:
主函數(shù)的兩個(gè)形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱為命令行參數(shù)),各個(gè)指針 argv.. argv[argc-1] 指向每個(gè)這些字符串的第一個(gè)字符。argv[0] 是指向一個(gè)表示用于執(zhí)行該程序自身的名字的空結(jié)尾多字節(jié)字符串(或者當(dāng)執(zhí)行環(huán)境不支持時(shí),為空字符串 "")的開頭字符的指針。
這些字符串是可以改動(dòng)的,雖然對(duì)它們的改動(dòng)并不會(huì)被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來使用它們。由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個(gè)元素 argv[argc] 保證為一個(gè)空指針。
函數(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);
}
比如一個(gè)函數(shù)是
int main()
int就是函數(shù)返回類型,說明其返回值是一個(gè)int型常量。如果返回值是double型、float等就要把int的位置上換成double、float等。若沒有返回值,就是void型
從內(nèi)存角度來講,函數(shù)參數(shù)是一定保存到棧區(qū)的,函數(shù)體內(nèi)定義的變量可以保存到棧區(qū),比如局部變量,也可以保存到靜態(tài)數(shù)據(jù)區(qū),比如static變量。示例如下:
#include?stdio.h
#include?locale.h
void?f(int?a,?int?b)?{
printf("%d\t%d\n",?a,?b);
}
int?main()
{
int?x?=?1;?//局部變量?保存到棧區(qū)
static?int?y?=?2;?//static變量,保存到靜態(tài)數(shù)據(jù)區(qū)
f?(x,?y);?//x和y必須保存在棧區(qū)
return?0;
}
main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個(gè)參數(shù)可以認(rèn)為是 main函數(shù)的形式參數(shù)。
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ù)……