不明白你的意思……是不是類似于這樣 int hello(char a,int i = 4,int m = 9){} ?
朝陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),朝陽網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為朝陽千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的朝陽做網(wǎng)站的公司定做!
這樣在c語言中是不可以的,這是c++的概念,默認參數(shù),使用方法如下:以上面的hello函數(shù)為例
hello(n); 默認i=4,m=9。 hello(n,5,23); 這里在函數(shù)中i = 5,m = 23.
就是說,如果調(diào)用時給參數(shù)賦值了,就使用賦值的,如果沒有,就使用默認的
需要標明一點,這種函數(shù)參數(shù)表有個規(guī)則,就是所有的默認參數(shù)都靠后,即:int hello(int a = 1,int b,int c=23){} 是錯誤的……而且,使用時,也不可以跳過一個默認值給后面的值賦值,如:
int hello(char a,int b= 12,char c = 'd')如果想?yún)?shù)b使用默認而給c賦值,那么必須是hello(a,12,c),如果跳過賦值b,即:hello(a,c);就是錯的,很好理解,這樣就把c賦值給參數(shù)b了,一定報錯。
n = scanf("%d",n);
這一句有問題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入?yún)?shù)的個數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個變量);
如果用戶輸入”3,4”,可以正確輸入a,無法輸入b,返回1(正確輸入了一個變量)。
2) 0,表示用戶的輸入不匹配,無法正確輸入任何值。如上例,用戶如果輸入”,3 4”,返回0。
3) EOF,這是在 stdio.h 里面定義的常量(通常值為-1),表示輸入流已經(jīng)結(jié)束。在Windows下,用戶按下CTRL+Z(會看到一個^Z字符)再按下回車(可能需要重復(fù)2次),就表示輸入結(jié)束;Linux/Unix下使用CTRL+D表示輸入結(jié)束。
你這個輸入一個返回值就是1,因此n也會一直等于一
可以對main函數(shù)里面的變量賦值。
main本身是函數(shù),里面沒有函數(shù)了。
#include
stdio.h
f(int
a,int
b,int
m){
//這個函數(shù)是個完全沒意思的函數(shù)
m=a*b;
return
;
//原因在這
這里直接return了
沒指明返回哪個變量
那它的意義就只是說f函數(shù)結(jié)束了
其實什么也沒返回
}
void
main(){
int
m=1;
//這里對m賦值1
f(2,3,m);
//運算是完全沒意思的運算
所以最后結(jié)果是1
printf("%d",m);
}
為什么運行結(jié)果是m=1?????
//
在f函數(shù)那
return
m
就能得到你想要的
不過要把主函數(shù)里的倒數(shù)3行改成
m=f(2,3,m)