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

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

數組變量是const的指針怎么理解呢?

數組變量是const的指針怎么理解呢?

C
Single丶love 2016-08-14 23:32:00
但我們不是依然可以在初始化之后改變數組單元的值嗎,就像a[0]=10,但const不是不允許改變嗎?這個數組變量是const的指針怎么理解呢?求詳細一點啊,萬分感謝!怎么利用這個解釋 int b[]=a ; 是錯誤的呢?
查看完整描述

5 回答

已采納
?
揍扁扁了

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

? ? ? ? 首先先對比一下int * const arr 和 int const * arr的區別吧。前者的const作用在arr上,arr的值不可以變,比如arr++就是錯誤的。后者作用在* arr上,即不能通過arr去改變它所指向的地址里存儲的值,即*arr = 10是錯誤的。這就解釋了第一個問題。

? ? ? ? 其次,int a[]的方式聲明了一個本地變量,一經聲明便分配了一段固定的連續的內存單元。a是這段存儲單元的首地址,如同上邊說的一樣a是一個常量。int b[],b也是一個常量。常量 = 常量?這顯然是錯的。這就解釋了第二個問題。

? ? ? ?至于為什么把數組名設計為一個常量,希望有大神可以解惑^_^

查看完整回答
2 反對 回復 2017-08-23
?
hust_web

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

1.首先一個數組,比如a[10] ,它的首地址a和指針不一樣,你不能再對a賦值,比如你寫的int b[10]; b=a;是錯誤的,

2.其次const修飾數組,比如const int a[10]= {1}; 說明里面的數據是常量,你再寫a[0] = 1之類出錯。

3. 還有const int a[10] = {1}中的a[0] = 1沒問題,但是a[0] 和const int b = 1 的b也有區別,比如:

????const int a[10] = {1}; int arr[ a[0] ] = {0}; 會出錯

????const int b=1; ? int arr[b] = {1} = {0}; ? 沒問題

????至于為什么,還不知道,希望大神解答。


查看完整回答
反對 回復 2016-08-21
?
凌小天3635910

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

數組名絕對不等于指針,而且不是指針。
  數組名是指針常量,地址是絕對的,score指向受保護,但首地址的內容可以改變,所以數組首地址應該是指針常量int *const score。
  指針是一個變量,變量的值是另外一個變量的地址。那么,既然指針是變量,那么指針必然有自己的存儲空間,只不過是該存儲空間內的值是一個地址值,而不是別的內容。


摘自百度知道。

查看完整回答
反對 回復 2016-08-15
?
繁華如夢傾城殤

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


數組變量是一個指針,它指向的內容是const int 類型。數組變量本身不用初始化它可以指向任何標示符,但它指向的內容是不能被改變的

查看完整回答
反對 回復 2016-08-15
?
木柘

TA貢獻143條經驗 獲得超94個贊

數組指針是地址,你所謂的改變是賦值不改變地址。

查看完整回答
反對 回復 2016-08-15
  • 5 回答
  • 0 關注
  • 4023 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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