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

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

關于數組求值,求解答謝謝

關于數組求值,求解答謝謝

C
Single丶love 2016-08-14 23:13:37
求解答謝謝
查看完整描述

2 回答

已采納
?
凌小天3635910

TA貢獻17條經驗 獲得超13個贊

int?a[]={5,15,34,54,12,2,52,72};???//創建一個整形數組,大小為8個整形
int?*p=&a[5];??????????????????????//創建一個指針變量p,將數組a的第六個值所在的地址賦值給p,*p=2

printf("%d",*p[-2]);???????????????//p[-2]等價于(p+(-2)),此時指向p地址向前數兩位的a[3]。值為54.


查看完整回答
2 反對 回復 2016-08-15
?
快樂的時光

TA貢獻79條經驗 獲得超48個贊

? ? ? ? ??如果你在你的程序里再有下面的定義語句的話 int *p=&a[3]; 那你使用 p[-2]就完全沒問題了,因為它表示 a[1].

?? ? ? ? 如果你定義了一個數組后,比如 int a[5]; 在內存中會為這個數組分配5個存儲單元,此時如果你用這5個單元是完全沒問題的,因為這5個已經被你申請了,而其他沒被申請的單元是不能隨便用的,比如 a[-2]是表示 a[0]前的兩個單元(每個大小編譯系統會根據你聲明的數組元素的類型確定,在這個問題中每個單元都是 int型的),如果碰巧這個單元沒被分配給其他變量時你使用會沒有問題,但是如果已經被其他變量占據,那此時你使用就會出現問題,所以書上要求不能為負的是正確的,你的使用沒問題是巧合。即使偶爾可以使用,也不要這樣做,第一這樣做沒什么意義,第二會使程序存在潛在的隱患。


查看完整回答
反對 回復 2016-08-14
  • 2 回答
  • 0 關注
  • 1450 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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