其實(shí)我們也可以把函數(shù)當(dāng)作一個(gè)變量來(lái)看,既然是變量,那一定也可以有類型。還舉最前面的例子,現(xiàn)在要求在main()函數(shù)里輸入一個(gè)整數(shù)作為正方形的邊長(zhǎng),在子函數(shù)里求正方形的面積,然后再在主函數(shù)里輸出這個(gè)面積。
創(chuàng)新互聯(lián)建站從2013年成立,先為和田等服務(wù)建站,和田等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為和田企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
通過使用指針,在函數(shù)調(diào)用時(shí),傳遞帶有地址的參數(shù),并使用指針更改其值;這樣,修改后的值就會(huì)變成原始參數(shù)。
a) 使用靜態(tài)局部變量存儲(chǔ),并返回地址;b) 使用全局變量存儲(chǔ),返回地址;c) 函數(shù)中動(dòng)態(tài)分配內(nèi)存,并返回申請(qǐng)到的地址,此種方法需要注意,在使用后需要釋放;d) 在參數(shù)中傳入數(shù)組地址,并返回。
return命令的含義 return命令的意思是返回調(diào)用者百。如果return后面有值(如你函數(shù)中的10),則將該值返回給調(diào)用者。
繼續(xù)第三次循環(huán)num又等于6了,重復(fù)第一次結(jié)果num==4……如此往復(fù),結(jié)果總是4。
時(shí)可能由于輸入?yún)?shù)不符合 相關(guān)規(guī)則導(dǎo)致得不到合理結(jié)果則返回 1(非零 , 可以自定義錯(cuò)誤含義),如果沒有任何問題,得到預(yù)期結(jié)果則返回 0;c語(yǔ)言要求我們要有良好的函數(shù)書寫習(xí)慣。當(dāng)然也可以通過返回值進(jìn)行傳遞值。
……fun(a);a++;……當(dāng)fun(a)結(jié)束后就會(huì)返回調(diào)用處,執(zhí)行下一句a++了。遞歸函數(shù)是先展開的過程,每次調(diào)用新的遞歸函數(shù)就進(jìn)入下一層,直到遇到終止條件,然后一層層返回。
“str 屬于局部變量,位于棧內(nèi)存中,在Func 結(jié)束的時(shí)候被釋放,所以返回str 將導(dǎo)致錯(cuò)誤。為什么當(dāng)返回的是int *p類型時(shí)卻正確?按理說應(yīng)該都被釋放了。
沒有返回值的函數(shù):功能只是完成一個(gè)操作,應(yīng)將返回值類型定義為void,函數(shù)體內(nèi)可沒有return語(yǔ)句。有返回值的函數(shù):函數(shù)的最后會(huì)有一個(gè)返回值return,可以用來(lái)獲取該函數(shù)執(zhí)行結(jié)果返回給該函數(shù),讓外部調(diào)用該函數(shù)的。
在C語(yǔ)言中,可以用以下幾種方式調(diào)用函數(shù):函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
voidbb(intcc);};實(shí)際上bb的函數(shù)原形是voidbb(aa&this,intcc);以前知道類的成員函數(shù)在調(diào)用時(shí)會(huì)傳入一個(gè)this指針,而不曉得thiscall就是專門指定了這種調(diào)用方式。
舉一個(gè)比較實(shí)際的例子:VB中的Replace函數(shù),它的能力是返回字符串其中指定數(shù)目的某子字符串被替換為另一個(gè)子字符串。如果成功則返回替換完的字符串,如果給定的字符串是個(gè)空的,那么就返回一個(gè)錯(cuò)誤。
也可以用來(lái)返回0,表示返回為空,返回一個(gè)代數(shù)值,通常在子函數(shù)zd的末尾。return 表示把程序流程從被調(diào)函數(shù)轉(zhuǎn)向主調(diào)函數(shù)并把表達(dá)式的值帶回主調(diào)函數(shù),實(shí)現(xiàn)函數(shù)值的返回,返回時(shí)可附帶一個(gè)返回值,由return后面的參數(shù)指定。
1、C語(yǔ)言中實(shí)現(xiàn)函數(shù)返回字符串,首先要確定函數(shù)返回的字符串地址的來(lái)源,一般分為四種方式:函數(shù)形參帶進(jìn)來(lái)的地址。靜態(tài)局部變量地址。局部變量地址,必須在函數(shù)中用malloc函數(shù)進(jìn)行地址分配。采用全局變量地址。
2、C語(yǔ)言實(shí)現(xiàn)返回一個(gè)字符串?dāng)?shù)組,是沒有這種功能的,但是可以用指向數(shù)組的指針來(lái)實(shí)現(xiàn):解釋:char **p 這個(gè)p就是指向數(shù)組的指針,它指向一個(gè)數(shù)組的起始地址. 想要引用里面的數(shù)組時(shí),直接使用p[i] 即可。
3、在void strcat()的strcat前添加*,表示返回char 指針。strcat()應(yīng)該返回str1,即 return str1。str1是連接的結(jié)果,調(diào)用者有責(zé)任確保str1數(shù)組空間足夠大,以便在其尾部添加str2后,不會(huì)覆蓋其他數(shù)據(jù)空間。
1、c語(yǔ)言怎樣從分函數(shù)回到主函數(shù)的方法。如下參考:通過使用指針,在調(diào)用函數(shù)時(shí),傳遞一個(gè)地址參數(shù)并使用指針更改其值;因此,修改后的值成為原始參數(shù),如下所示。使用指針返回的結(jié)果如下圖所示。
2、如果函數(shù)在正常結(jié)束后返回主函數(shù),則不用額外添加任何語(yǔ)句,到函數(shù)結(jié)束后自動(dòng)返回主函數(shù);如果是在函數(shù)中間某個(gè)分支處需要直接退出函數(shù)返回到主函數(shù),則可以添加return;語(yǔ)句行,程序執(zhí)行到這一語(yǔ)句后,就會(huì)立即返回到主函數(shù)。
3、函數(shù)都是并列關(guān)系,不存在一個(gè)嵌套另一個(gè)的問題,只能是一個(gè)調(diào)用另一個(gè),在其中又調(diào)用另一個(gè),一層層調(diào)用,正常情況都只有一個(gè)返回出口,也是一層一層返回,不能跳過。
4、C++可以通過異常處理的throw和catch來(lái)實(shí)現(xiàn)從子函數(shù)的子函數(shù)直接返回主函數(shù),匯編語(yǔ)言可以用jmp指令跳轉(zhuǎn)實(shí)現(xiàn)這個(gè)需求。C語(yǔ)言主要靠函數(shù)調(diào)用和return在函數(shù)之間切換,很難做到在多層調(diào)用中直接返回主函數(shù)。
5、執(zhí)行完子函數(shù)之后回到調(diào)用該成員函數(shù)處的下一執(zhí)行點(diǎn)。如果是主函數(shù)中調(diào)用類的成員函數(shù),那么回到調(diào)用該成員函數(shù)的下一執(zhí)行點(diǎn)。C語(yǔ)言調(diào)用函數(shù)就是先定義并聲明函數(shù),之后再根據(jù)定義函數(shù)的格式調(diào)用。
6、是要跳出這兩個(gè)函數(shù)還是把值傳回去函數(shù)繼續(xù)。如果跳出兩個(gè)函數(shù)里都return;就行,需要把值傳到main里運(yùn)行main再繼續(xù)的話,應(yīng)該把main函數(shù)里用到的代碼構(gòu)造成一個(gè)函數(shù),然后可以直接傳值、構(gòu)造個(gè)全局變量或指針都行。
1、方法:把最大值、最小值分別定義成2個(gè)全局變量max、min,在用戶自定義函數(shù)中把求出來(lái)的最大值與最小值分別賦給全局變量max、min。函數(shù)調(diào)用完畢后全局變量的max、min值即保存了函數(shù)要求返回的值。
2、方法一:設(shè)置全局變量,這樣你在形參中改變?nèi)肿兞浚趯?shí)參中也會(huì)有效。所以你可以在形參中改變多個(gè)全局變量的值,那么在實(shí)參中就相當(dāng)于返回多個(gè)值。
3、在C語(yǔ)言中,函數(shù)只能返回一個(gè)值,要返回兩個(gè)值,可以改換思路,通過其它方式做到。1 建立數(shù)組,返回指針。
4、c語(yǔ)言函數(shù)只能最多有一個(gè)返回值。我們以一個(gè)數(shù)據(jù)運(yùn)算函數(shù)作為實(shí)例講解:使用指針返回額外數(shù)據(jù):定義指針參數(shù),將結(jié)果通過指針返回。如果有很多類型相同的數(shù)據(jù),如何返回?cái)?shù)組呢?c語(yǔ)言也只能借助指針返回?cái)?shù)組。
5、例如 int a[] f(),這個(gè)shu函數(shù)返回值就是一個(gè)整型的數(shù)組,如果你要返回兩個(gè)值,可以定義數(shù)組長(zhǎng)度為2,a[0]保存第一個(gè)值,a[1]保存第二個(gè)值。
6、這樣就可以實(shí)現(xiàn)返回多個(gè)值!03 結(jié)構(gòu)體指針返回 結(jié)構(gòu)體是C語(yǔ)言涉及數(shù)據(jù)結(jié)構(gòu)的最直接的容器,通常在編程過程中實(shí)現(xiàn)一個(gè)功能模塊在主函數(shù)里,我們可以定義一個(gè)結(jié)構(gòu)體類型的變量,然后直接用函數(shù)返回值賦值就可以了。