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

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

在c語言里數(shù)組長度是固定的么(不討論柔性數(shù)組)比如int a[5]={0,1,2,3,4}

在c語言里數(shù)組長度是固定的么(不討論柔性數(shù)組)比如int a[5]={0,1,2,3,4}

白板的微信 2018-07-10 15:34:37
如上定義以后,為什么 a[5]=5;這樣賦值以后也是可以的,但是用sizeof(a)得到的還是20呢,可以給a[5]賦值這是不是代表它長度可變,,,雖然數(shù)組在匯編里就是一個地址然后往后不斷偏移偏移,,可是老師講數(shù)組都一再強調(diào)數(shù)組下標不能越界……往解答一二
查看完整描述

2 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

C語言里面,所謂的長度固定,是因為分配給它的內(nèi)存只有5個int的空間,
1.你的電腦和編譯器上,一個int應(yīng)該是4個字節(jié),5個不就是20個字節(jié)的內(nèi)存嘛。但是5個元素的數(shù)組下標只能到4吧,
a[5]豈不是別人家的內(nèi)存空間么?
2.數(shù)組名a就是一個不可變的指針(a是指針,但是a不能被賦值,比如a++), a永遠是數(shù)組的首地址(一生一世,永世不移)
但是通過指針方式 *(a+3)這樣子是闊以的,因為a+3并沒修改a的值啊
3.對于指針,有一種運算符叫[] , []中的數(shù)字叫做偏移量,根據(jù)類型不同,每次偏移的距離不一樣,比如int類型,你的int是32位(4字節(jié)),
那么a[0]就是從首地址向后偏移0個字節(jié)的內(nèi)容,也就是首地址的內(nèi)容
4. a[5]=26; 是指給從a(首地址開始),向后偏移5個int的字節(jié)數(shù),如果你的數(shù)組定義的時候是5個元素,下標最大是4,a[4]是最后一個
C語言訪問a[5]不會報錯,但是你隨便動用別人家的內(nèi)存地址,就不怕系統(tǒng)不穩(wěn)定,系統(tǒng)崩潰么?
這一塊內(nèi)存空間是空閑的算運氣好,如果不空閑呢? 最好不要隨便動別人家的內(nèi)存嘛,你申請的內(nèi)存你可以改,別人家的不要動。

查看完整回答
反對 回復 2018-07-19
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

數(shù)組長度是固定的。之所以可以a[5]=5是因為,C語言不對下標的合法性(是否越界)做出檢查。這么做會造成什么后果(沒事,還是會侵犯另一個變量,或者訪問違例),是不可預料的。

查看完整回答
反對 回復 2018-07-19
  • 2 回答
  • 0 關(guān)注
  • 1305 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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