1、形參的類型是不能省略的。函數(shù)的存儲(chǔ)類型就是函數(shù)定義時(shí)函數(shù)名前面的數(shù)據(jù)類型前面的存儲(chǔ)類型,缺省時(shí)應(yīng)該是:extern
成都創(chuàng)新互聯(lián)公司咨詢電話:028-86922220,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)頁制作領(lǐng)域十多年,包括門窗定制等多個(gè)方面擁有豐富的網(wǎng)站維護(hù)經(jīng)驗(yàn),選擇成都創(chuàng)新互聯(lián)公司,為網(wǎng)站錦上添花!
,表示該函數(shù)屬外部函數(shù)(即可以被本C文件外的其他C源程序文件中的函數(shù)調(diào)用)。
2、對(duì)于自定義函數(shù),可使用缺省參數(shù)來達(dá)到某一程度的“重載”等功能,缺省參數(shù)只能放在函數(shù)聲明中,因?yàn)榫幾g器必須在使用前知道缺省值。只有函數(shù)參數(shù)列表后部參數(shù)能夠缺省,一旦在某一位置使用缺省參數(shù)值后,自此位置以后皆為缺省參數(shù)值。
缺省參數(shù)可以讓參數(shù)沒有標(biāo)識(shí)符,在C++中,函數(shù)定義是,不一定需要標(biāo)識(shí)符:
void
f(int
number,
int
=
0,
float
=
1.1f);
void
f(int
number,
int
,
float
f){/*
....
*/}
在此函數(shù)體中,number與f可被引用,但沒有標(biāo)識(shí)符的int則不行,調(diào)用時(shí)如f(0)(此時(shí)函數(shù)的參數(shù)列表為(0,0,1.1))或f(0,1,2)。這種語法允許我們將一個(gè)參數(shù)作為占位符而不去使用它,其目的在于我們以后可以修改函數(shù)定義而uxuyao修改所有的函數(shù)調(diào)用(存在參數(shù)名沒有使用編譯器將給出一個(gè)警告),更重要的是當(dāng)我們開始使用一函數(shù)參數(shù)后發(fā)現(xiàn)不需要它時(shí),我們可以高效地將它刪除而不會(huì)產(chǎn)生警告錯(cuò)誤,并且不需要修改函數(shù)那些調(diào)用函數(shù)以前版本的程序代碼。
這個(gè)說法是正確的,C語言確實(shí)允許這樣,但C++不允許這樣
你在vs2017上看到波浪線是因?yàn)関s2017默認(rèn)是個(gè)c++編譯器,要讓vs2017按照c規(guī)則編譯代碼,把源代碼文件的擴(kuò)展名改成".c"就可以了
就是定義函數(shù)的時(shí)候不執(zhí)行函數(shù)類型(即函數(shù)的返回值類型),編譯器會(huì)自動(dòng)默認(rèn)函數(shù)類型為int,比如下面一段代碼中的函數(shù)Func
#include
stdio.h
Func()
{
return
1;
}
int
main()
{
printf(
"%d
",
Func()
);
return
0;
}
這條規(guī)則沒啥用,不寫明函數(shù)類型是絕對(duì)不值得提倡的~
形參
或者說所有的變量,缺省的存儲(chǔ)類別都是auto的。
C語言中四種存儲(chǔ)類別
auto
static
extern
register
除非標(biāo)了,否則都是auto。
缺省,表示的就是你在定義一個(gè)變量的時(shí)候,沒有對(duì)他進(jìn)行初始化,也沒有進(jìn)行一些賦值操作。系統(tǒng)就會(huì)自動(dòng)給你定義的變量賦一個(gè)值,這個(gè)值就稱為缺省值。
隱含類型是 int型
例如
sum(int a,int b)
{
int c;
c=a+b;
return c;
}
就等同于
int sum(int a,int b)
{
int c;
c=a+b;
return c;
}