1樓:網友
聽你這麼一說,我也沒聽懂。首先你要明白,我們可以賦予函式引數預設值。所謂預設值就是在呼叫時,可以不寫某些引數的值,編譯器會自動把預設值傳遞給呼叫語句中。
預設值可以在宣告或定義中設定;也可在宣告或定義時都設定,都設定時要求預設值是相同的。
關於預設值要注意幾點:
1.若在定義時而不是在宣告時置預設值,那麼函式定義一定要在函式的呼叫之前。因為宣告時已經給編譯器乙個該函式的嚮導,所以只在定義時設預設值時,編譯器只有檢查到定義時才知道函式使用了預設值。
若先呼叫後定義,在呼叫時編譯器並不知道哪個引數設了預設值。所以我們通常是將預設值的設定放在宣告中而不是定義中。
2.不能將實際值傳遞給引用型別的引數。可以將變數作引用型別引數的預設值,這時變數必須是已經宣告且是全域性變數。
宣告函式時,要將類或結構中定義 的靜態成員變數作為預設值,若該類或結構還未建立例項,那要在此靜態成員變數前加上作用域操作符(::
若已宣告瞭類或結構的例項,則引用其成員變數作為函式引數的預設值,就要在變數前加上例項名和成員操作符(.)
3.若給某一引數設定了預設值,那麼在參數列中其後所有的引數都必須也設定預設值,否則,由於函式呼叫時可不列出已設定預設值的引數,編譯器無法判斷在呼叫時是否有引數遺漏。
4.在呼叫時,若給已經設定預設值的引數傳遞實際值,既要取代預設值,則在參數列中被取代引數的左邊所定義的所有引數,無論是否有預設值,都必須傳遞實際引數。
這也是因為函式呼叫時可不列出已設定預設值的引數。假若被取代引數的左邊既有設定了預設值的引數也有未設定預設值的引數,若不對其左邊的所有引數傳遞實際引數,編譯器也就無法分辨傳遞的這個取代值到底要傳遞給哪個引數。
例如有以下函式宣告:
int functionone(int x,int y=0,int z=0,int w=0);
我們要給z 傳遞整型值8,作如下呼叫:
functionone(8);
顯然,編譯器無法確定這個8 到底要傳遞給哪個引數。為了達到我們的目的,必須這樣呼叫:
functionone(0,0,8);
這是x 被傳遞了0,y 被傳遞了 0,z 被傳遞了8
2樓:網友
一般函式具有的預設引數都是放在最右邊的。
3樓:網友
設定預設值是要從右向左設定。
c語言函式呼叫的乙個例子,誰能解釋一下嗎
4樓:
函式呼叫實參與形參從右至左對應計算。所以——
甲圖:呼叫f(i,++i);時先計算++i;i;後,i的值都是3,所以呼叫等價於f(3,3);,由於a==b所以輸出0。
乙圖:呼叫f(i,i++)時先計算i++;i;後,由於++是後++所以要等將i的值2賦給形參b後才做++運算,這時呼叫等價於f(3,2);,所以a>b成立,輸出1。
關於c++函式題目解答
5樓:繁簡知音
strlen(strcat(strcpy(s,t),r))表示式的執行順序為:
strcpy(s,t) 將t陣列的內容複製到s陣列,並返回s陣列的結果。
strcat(strcpy(s,t),r) 將r陣列的內容拼接到步驟1中返回的s陣列,並返回s陣列的結果。
strlen(strcat(strcpy(s,t),r))計算步驟2中返回的陣列s的長度。
最終結果為33
求解c語言例題
6樓:網友
a*a=9
a-=a*a等價於a=a-a*a 3-3*3=-6賦給aa值為-6 不再為3了。
a+=(a-=a*a) 等價於a=a+(a-=a*a) 其中a-=a*a=-6前面以計算過。
所以a=-6-6=-12
7樓:lee木頭人
如果你手邊有c的書的話,看附錄,有c中運算子號的計算順序,對照那個順序再算一次你就明白了。
8樓:網友
= 是從右往左做的 自己算下。
9樓:網友
+=的運算優先順序是從右邊到左邊,所以整個運算式是從,a*a算起。a*a=9,a-=a*a的值 為-6,後面的a+=``,就是a+=-6,因為此時的a=6.所以,整個運算式的結果 為-12
關於c++函式的乙個小問題。求解答,
10樓:海岸餡
//b滿足條件指的是a%b==0;
質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的。
數。函式對於輸入的變數a,如果對於所有小於a的b,存在乙個b滿足條件,就返回0,否則返回1;
因為當出現乙個b滿足條件後 if語句生效,函式終止,返回0;
return 0與return 1就返回值不同,用於根據返回值判斷a是否滿足條件,顯然a是質數返回1,a是合數返回0;
中間的問題不是很懂,不過這是個判斷輸入的a是不是質數的函式;
如果樓主想實現數質數的功能的話,這個函式可以;
11樓:抬頭望那蒼穹
加上大括號你就明白了。
int test(int a)
return 1; //不滿足if條件函式返回值是1}你定義的是返回值為int型的函式,最後就得返回乙個int型資料,至於你要返回哪個數字你可以自己決定的。
12樓:阿彌陀佛
我直接教你個吧,這個太爛了。
int test(int a){
int n=0;
for(int i=2;in=1;
return n; //是素數返回1,不是返回0有什麼問題可以再問。
13樓:網友
return 的是乙個整數你return什麼都不重要一般就0和1用來區別是或者不是素數。
看你的提問應該對程式設計理解不深,建議多看點相關書只要存在乙個b使得a%b==0就是說a不是素數,所以直接放回0,當迴圈結束時也就是說,沒有能整除的整數,也就是素數的意思,所以返回1
希望能幫到你,**不清楚再問。
14樓:網友
1、第3行和第4行的意思是:在2到a-1之間,是否能找乙個數b(2<=b<=a-1),使得a%b等於0,如果找到了,則return 0,即當前這個數a不是素數。
2、如果在2到a-1之間,沒有找到乙個數b ,使得a%b等於0,則說明a是素數。
3、到底想return 0,還是return 1,這是根據你自己的習慣來的,一般大家都喜歡用1表示真,用0表示假,當然,在c語言中,非0即表示真。在這裡呢,當然是return 0表示當前數a不是素數,return 1表示當前數a為素數。
c++新手求教函式問題
15樓:網友
int & str(int x) 函式str 引數 int 返回乙個 int 型的 引用。
引用就是某個目標變數的「別名」(alias),對引用的操作與對變數直接操作效果完全相同。
當返回乙個變數時,會產生拷貝。當返回乙個引用時,不會發生拷貝,你可以將引用看作是乙個變數的別名,就是其他的名字,引用和被引用的變數其實是乙個東西,只是有了兩個名字而已。
問題的關鍵是,當你想要返回乙個引用而不是乙個拷貝時,你要確保這個引用的有效性,比如:
int & fun()
這樣是不行的,因為a會在fun退出時被銷燬,這時返回的a的引用是無效的。
這種情況下,如果fun的返回型別不是int & 而是int就沒有問題了。
因此,要返回乙個引用時,「臨時變數」不能是「臨時」的,至少得等函式外部使用完畢這個引用之後,才能銷燬它。
16樓:網友
&是取址符,取str的位址。
後面就是乙個函式而已。
指標還是比較複雜的這裡可能講不清楚建議你找老師或者會的人仔細問問。
c語言的函式指標舉個例子,c語言中函式指標是什麼 有什麼用 舉個例項
劉文正粉絲 函式指標告訴cpu下一步需要執行 的 的指標,一陣列十分相像.include void function int i,double d 一個函式的宣告 void anotherfunction int i,double d 另外一個函式宣告 int main mxl033 回答是對的。v...
C語言中怎樣呼叫函式(舉個例子)
農家小子之 c語言中呼叫函式的方法及步驟 工具 原料 c語言 1 首先需要輸入想要呼叫的函式。2 然後當輸入一個括號後,即可觀察他的引數。3 接著在對應的引數中輸入引數值。4 然後,系統會發生一個警告。5 接著需要呼叫它相應的標頭檔案。6 最後再次編譯,發現沒有任何警告和錯誤即可。 求學解惑 我想c...
c語言中怎樣呼叫函式(舉個例子)
求學解惑 我想c語言中呼叫函式分以下內幾部 1 根據呼叫的函式名找到函式入口 2 在棧中審請呼叫函式中的引數及函式體內定義的變數的記憶體空間3 函式執行完後,釋放函式在棧中的審請的引數和變數的空間,最後返回值 如果有的話 洛雨曦 include main int add int x,int y 將函...