函數(shù)指針的默認(rèn)參數(shù)c語(yǔ)言 c語(yǔ)言 指針參數(shù)

c語(yǔ)言 指針函數(shù)的參數(shù)問(wèn)題

我用的visal C++6.0編譯器

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比石首網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式石首網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋石首地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。

結(jié)果是:里面沒(méi)有double的時(shí)候,編譯不通過(guò)。加上double之后才能通過(guò)。

剛剛查了下

“注1:函數(shù)括號(hào)中的參數(shù)可有可無(wú),視情況而定。 ”

我想這個(gè)“視情況而定”應(yīng)該就是“視編譯器而定”吧。

另外這個(gè)指針應(yīng)該叫做函數(shù)指針。

指針函數(shù)是 帶指針的函數(shù)。

在C語(yǔ)言中函數(shù)的默認(rèn)參數(shù)類型

??在許多c語(yǔ)言初學(xué)者中編寫函數(shù)時(shí),都喜歡將無(wú)參函數(shù)中的參數(shù)類型忽略。

??但是實(shí)際上 默認(rèn)的參數(shù)類型 不是無(wú)參 void ,而是接受 任意數(shù)量和類型的參數(shù) 。也就是說(shuō) int func() 和 int func(void) 是不一樣的。下面通過(guò)一個(gè)例子加深了解一下在C語(yǔ)言中函數(shù)的默認(rèn)參數(shù)類型:

??所以說(shuō),在使用c語(yǔ)言編寫無(wú)參函數(shù)時(shí),一定要把 void 寫上去,不然會(huì)有安全隱患。

c語(yǔ)言函數(shù)聲明中將函數(shù)指針參數(shù)設(shè)置為NULL的默認(rèn)值

指定形參默認(rèn)值是C++的語(yǔ)法,標(biāo)準(zhǔn)C是不支持這種語(yǔ)法的。

使用c++語(yǔ)法,通常可以保存文件時(shí)使用CPP后綴保存。

另外,形參的默認(rèn)值是在聲明函數(shù)原型的時(shí)候指定,不是在函數(shù)定義的時(shí)候指定。

★C語(yǔ)言 指針作函數(shù)參數(shù)

void fun(char *c,int d)

使用指針作為參數(shù)時(shí),指針變量c指向了變量b,當(dāng)c變化時(shí),b也會(huì)變化。這里*c=*c+1,是*c由a變?yōu)閎。

第二個(gè)參數(shù)d變化時(shí),a并不會(huì)變化。

%e是一種轉(zhuǎn)換說(shuō)明符號(hào),表示浮點(diǎn)數(shù),并且采用e計(jì)數(shù)法。

比如2.12e2

C語(yǔ)言函數(shù)形參初始值?

可以這樣調(diào)用。

int b=0指的是默認(rèn)參數(shù),調(diào)用時(shí)傳入或不傳入b都行,如果不傳入b的話,那么b的值就是0。

另外注意只有最后面的參數(shù)可以是默認(rèn)參數(shù)。

c語(yǔ)言中函數(shù)聲明可以添加 默認(rèn)參數(shù)值嗎?

#include

void foo(int x, int y, int z)

{

printf("x = %d at [%X]n", x, x);

printf("y = %d at [%X]n", y, y);

printf("z = %d at [%X]n", z, z);

}

int main(int argc, char *argv[])

{

foo(100, 200, 300);

return 0;

}

運(yùn)行結(jié)果:

x = 100 at [BFE28760]

y = 200 at [BFE28764]

z = 300 at [BFE28768]

C程序棧底為高地址,棧頂為低地址,因此上面的實(shí)例可以說(shuō)明函數(shù)參數(shù)入棧順序的確是從右至左的??傻降诪槭裁茨兀坎榱艘恢毙┪墨I(xiàn)得知,參數(shù)入棧順序是和具體編譯器實(shí)現(xiàn)相關(guān)的。比如,Pascal語(yǔ)言中參數(shù)就是從左到右入棧的,有些語(yǔ)言中還可以通過(guò)修飾符進(jìn)行指定,如Visual C++.即然兩種方式都可以,為什么C語(yǔ)言要選擇從右至左呢?

進(jìn)一步發(fā)現(xiàn),Pascal語(yǔ)言不支持可變長(zhǎng)參數(shù),而C語(yǔ)言支持這種特色,正是這個(gè)原因使得C語(yǔ)言函數(shù)參數(shù)入棧順序?yàn)閺挠抑磷?。具體原因?yàn)椋篊方式參數(shù)入棧順序(從右至左)的好處就是可以動(dòng)態(tài)變化參數(shù)個(gè)數(shù)。通過(guò)棧堆分析可知,自左向右的入棧方式,最前面的參數(shù)被壓在棧底。除非知道參數(shù)個(gè)數(shù),否則是無(wú)法通過(guò)棧指針的相對(duì)位移求得最左邊的參數(shù)。這樣就變成了左邊參數(shù)的個(gè)數(shù)不確定,正好和動(dòng)態(tài)參數(shù)個(gè)數(shù)的方向相反。

因此,C語(yǔ)言函數(shù)參數(shù)采用自右向左的入棧順序,主要原因是為了支持可變長(zhǎng)參數(shù)形式。換句話說(shuō),如果不支持這個(gè)特色,C語(yǔ)言完全和Pascal一樣,采用自左向右的參數(shù)入棧方式

本文標(biāo)題:函數(shù)指針的默認(rèn)參數(shù)c語(yǔ)言 c語(yǔ)言 指針參數(shù)
本文來(lái)源:http://muchs.cn/article38/docchpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、微信小程序、面包屑導(dǎo)航、網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管