第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

115. 若有如下函數(shù)定義:

115. 若有如下函數(shù)定義:

C
包小龍蝦 2018-08-05 21:43:32
115. 若有如下函數(shù)定義:int fun(){static int k=0;return ++k;}以下程序段運(yùn)行后屏幕輸出為( )。int i;for(i=1;i<=5;i++) fun();printf("%d",fun());A. 0B. 1C. 5D. 6求會(huì)的大神詳細(xì)解析下,謝謝
查看完整描述

2 回答

已采納
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

printf 打印的是什么? 是 fun() 的值!? 這是什么意思?

這里的 fun() 就是個(gè)表達(dá)式,這是“函數(shù)調(diào)用表達(dá)式”。還記得吧,每個(gè)表達(dá)式都有值,“調(diào)用表達(dá)式”的值就是函數(shù)的返回值。

當(dāng)然,fun 函數(shù)需要被調(diào)用運(yùn)行才會(huì)得到返回值,所以 printf("%d",fun()); 這一語(yǔ)句執(zhí)行期間,fun 函數(shù)確實(shí)被調(diào)用了,它返回的值被 printf 打印了出來(lái)。


我們來(lái)看看 fun 函數(shù)中到底執(zhí)行了什么:

int?fun()
{
????static?int?k?=?0;
????return?++k;
}

k 并不是一個(gè)普通的函數(shù)局部變量,它被 static 修飾了。這樣的變量在函數(shù)第一次被調(diào)用時(shí)被初始化,而后函數(shù)再次調(diào)用時(shí),該變量會(huì)保留有前次函數(shù)調(diào)用時(shí)的值(并不會(huì)被再次初始化)

函數(shù)返回 ++k,我相信對(duì)自增你已經(jīng)很清楚了,這里會(huì)返回 ++k 表達(dá)式的值,也就是 k 自增后的值。


在 printf 語(yǔ)句之前,for 循環(huán)已經(jīng)調(diào)用過(guò) 5 次 fun 了。也就是在 for 語(yǔ)句中 fun 被首次調(diào)用,后又被調(diào)用了 4 次。

在首次調(diào)用 fun 時(shí),k 被初始化為 0,然后返回了 ++k 的值,不過(guò)返回值并沒(méi)有被使用,所以我們不管它。但是自增的副作用確實(shí)發(fā)生了,所以第一次調(diào)用 fun 之后,其中 k 的值自增為 1。

for 中第二次調(diào)用 fun 時(shí),因?yàn)?k 是 static 修飾的,所以 k 不會(huì)被再次初始化為 0,而是保留了上次的值 1。這樣最后 return 語(yǔ)句再次讓 k 自增為 2。

第三次調(diào)用時(shí)同理,最后 k 的值變?yōu)?3。

for 中的最后一次調(diào)用,也就是第 5 次調(diào)用 fun 之后,k 的值變?yōu)?5。

后面才是 printf 語(yǔ)句,這里又調(diào)用了一次 fun。此時(shí) k 為 5,所以 ++k 表達(dá)式的值為 6,這樣 fun 最后返回 6。? printf 就打印出 fun 的返回值 6。


查看完整回答
1 反對(duì) 回復(fù) 2018-08-13
  • 2 回答
  • 0 關(guān)注
  • 1038 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)