亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何理解C中同時聲明多變量的機制?

如何理解C中同時聲明多變量的機制?

冉冉說 2019-04-16 20:27:23
為了理解該機制,我做了實驗:intmain(void){intd=3;inta=1,b=2,*c=&d;(int*)e=&a,f=&b;return0;}編譯成果返回c.c:Infunction‘main’:c.c:4:11:error:‘e’undeclared(firstuseinthisfunction)(int*)e=&a,f=&b;^c.c:4:11:note:eachundeclaredidentifierisreportedonlyonceforeachfunctionitappearsinc.c:4:19:error:‘f’undeclared(firstuseinthisfunction)(int*)e=&a,f=&b;(int*)e=&a,f=&b;為什么行不通?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

Cmultiplesinglelinedeclarations說明了聲明多變量的機制。
如果要聲明比較特殊的類型時,比如指向int類型的指針,則應該要用到「聲明符」(declarator),而不是靠原本的類型前綴。
比如同時聲明多個指向int的指針時,則應該寫為int*a,*b,*c;而int*a,b,c只會聲明指向int類型的指針a,其它變量本身都屬于int類型。
當然,用typedef也可以:
typedefint*iptr;
iptrx,y,z;
(int*)e=&a,f=&b;之所以行不通,因為(int*)實際上是在聲明返回int類型的函數指針(大概?)。
                            
查看完整回答
反對 回復 2019-04-16
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

(int*)e=&a,f=&b;
其實我也不是很清楚,不過根據錯誤返回信息,可以看到,(int*)其實被解析成了強制類型轉換(本來就是這么著吧),所以錯誤信息是e未定義,然后整體是一個逗號表達式。。
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 941 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號