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

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

傳入函數的char字符數組大小?

void gettime(char tmp[]) {printf("sizeof(tmp)2=[%d]\n", sizeof(tmp));}main() {...char tmp[10];printf("sizeof(tmp)1=[%d]\n", sizeof(tmp));gettime(tmp);}為什么sizeof(tmp)1打印10,sizeof(tmp)2打印4呢?那如何讓gettime中傳入的tmp字符串也是10個字符空間呢?謝謝!
查看完整描述

2 回答

?
慕娘9325324

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

數組作為參數傳遞時,會退化為指針,所以是無法通過這種方式在函數中來獲取數組大小,必須另外再加一個參數來傳遞數組的大小,即函數原型改為void gettime(char tmp[], int len)

查看完整回答
反對 回復 2021-03-28
?
繁花不似錦

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

C語言里面的規定,函數的參數是數組時是按照指針傳遞的,也就是不論你傳的tmp里面有多少個char,函數內的sizeof結果都是4,也就是那個指針的大小,建議你這樣傳參時最好再加個大小的參數,例如:void gettime(char tmp[],int nCount)

查看完整回答
反對 回復 2021-03-28
  • 2 回答
  • 0 關注
  • 392 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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