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

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

字符數組的指針概念的理解,望討論。

字符數組的指針概念的理解,望討論。

HUWWW 2019-04-07 11:18:54
寫了如下一段代碼,代碼理解在其中,望牛人解答理解是否正確。//m聲明完后,m存儲了m數組第一個字符的地址,但m并不是指針charm[]="abcdef";//才是指針,該指針的地址為m的值char*x=m;//這種方式是將上面兩步合二為一,則n就代表了指向數組的第一個未知的指針char*n="abcdef";//數組m的長度printf("%d\n",sizeof(m));//指針x的長度printf("%d\n",sizeof(x));//指針n的長度printf("%d\n",sizeof(n));
查看完整描述

2 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

其實在內存上沒什么差別,但編譯器知道,m是字符串數組,x是字符指針。
于是在編譯sizeof(m)的時候,~~編譯器生成指令去根據當前內存管理方式找到申明的數組長度~~編譯器生成指令返回數組長度,在編譯sizeof(x)的時候,編譯器生成指令直接返回指針大小。
中間更正一下,sizeof的值就是在編譯時確定的
其實像你例子這樣得情況下,編譯器根本不用生成指令去找那些長度,因為編譯時數組長度已經確定,所以m的長度7就在指令里作為操作數了。一般freemalloc出來的空間才會去找。
總之,,編譯器已經看透了一切。。
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關注
  • 441 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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