你說的這些是C++的函數(shù)重載,C++是可以的,但C語言不支持函數(shù)重載
為企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站優(yōu)化、營銷型網(wǎng)站、競價(jià)托管、品牌運(yùn)營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運(yùn)營團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時(shí)降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
比如:
void
fun(int
n)
與int
fun(int
n)就是名稱相同,返回類型不同,參數(shù)相同
void
fun(int
n)
與int
fun(int
n,int
s)就是名稱相同,返回類型不同,參數(shù)類型相同個(gè)數(shù)不同
int
fun(int
n)
與int
fun(int
n,int
s)
名稱相同,返回類型相同,參數(shù)類型相同個(gè)數(shù)不同
所以這些在用C語言編程時(shí)都會(huì)報(bào)錯(cuò),就是不行
答案是:否
c語言中,變量和函數(shù)名稱不允許相同,比如你定義一個(gè)函數(shù)int a();那么你的main函數(shù)中,如果int a=a();則會(huì)報(bào)錯(cuò),這是c語言中非常討厭的一點(diǎn),當(dāng)然,反對(duì)者可能會(huì)說:“容易引起名稱混淆,導(dǎo)致不容易維護(hù)”,這是很牽強(qiáng)的說法,用現(xiàn)在流行的詞匯叫做:強(qiáng)行為c語言的缺點(diǎn)洗白,c語言的這個(gè)限制,極大程度的增加了初學(xué)者,尤其是自學(xué)者的學(xué)習(xí)難度,因?yàn)槌鯇W(xué)者不會(huì)考慮變量的含義,通常定義aa,bb,cc這樣更利于快速學(xué)習(xí),但是出來這個(gè)限制,并且不知情的情況下,甚至都不知道在網(wǎng)上如何搜索來解決這個(gè)小問題,所以個(gè)人覺得這是c的不友好之一
這是不能的。C程序中如果同時(shí)包含這兩個(gè)頭文件的話,就會(huì)發(fā)生沖突,鏈接的時(shí)候有兩個(gè)同名的函數(shù),就會(huì)無法鏈接通過的。
可以重名,不過函數(shù)的參數(shù)類型或數(shù)量要不一致,例子如下:
//遞歸求階乘
int calc(int num){
if(num==0){
return 0;
}else{
return num*calc(num-1);
}
}
//遞歸求任意一個(gè)整數(shù)的整數(shù)次方
int calc(int num,int count){
if(num==0){
return 0;
}else if(count == 0){
return 1;
}else{
return num*calc(num,count-1);
}
}
這兩個(gè)函數(shù)方法名稱完全一樣,但是參數(shù)不一樣,這種做法有一個(gè)叫法,叫函數(shù)的重載
不行。自定義函數(shù)名可以與庫函數(shù)名重名,且優(yōu)先選擇自定義函數(shù),但不能與代碼變量名重名。但自定義函數(shù)中的代碼可以用與這個(gè)函數(shù)名相同的變量名。早期的編譯器是這樣,現(xiàn)在與C++兼容的編譯器如何處理此事,沒試過。