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

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

我是如下這么調用的?。簽槭裁磖et一直是0???

long array[][2]={1,2,3,4,5,6,7,8};//很明顯4行int ret=length(array);long length(long array[][N]) /*宏N*/{if(sizeof(array[0])==0)return 0;elsereturn sizeof(array)/sizeof(array[0]);}
查看完整描述

3 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

return sizeof(array)值為4
sizeof(array[0])值為8,
返回值為0.5
你用int接受,難道希望他返回0.5么?
當然是0了,int整形數據,會丟棄掉小數點后面的數據

查看完整回答
反對 回復 2022-09-21
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

你可能還不是很了解,參數傳遞的形式,值傳遞,地址傳遞,引用傳遞(c++特性),而數組的傳遞形式就是一個地址傳遞,那么array的大小是4,他是一個指針,樓上說的很對。a[0]就等于是a+0,也指向的第一片地址,你第一片地址內有兩個int類型數據,所以是8,。那么4/8都是整形,結果就整形,也就是0.

查看完整回答
反對 回復 2022-09-21
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

sizeof 關鍵字不會動態計算目標大小。 它依據的編譯器在編譯過程中計算出來的值。
而形參本身接受調用者傳來的值,過程是動態的,這個在編譯階段是不可知的。

查看完整回答
反對 回復 2022-09-21
  • 3 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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