5 回答

TA貢獻11條經(jīng)驗 獲得超4個贊
? ? ? ? 首先先對比一下int * const arr 和 int const * arr的區(qū)別吧。前者的const作用在arr上,arr的值不可以變,比如arr++就是錯誤的。后者作用在* arr上,即不能通過arr去改變它所指向的地址里存儲的值,即*arr = 10是錯誤的。這就解釋了第一個問題。
? ? ? ? 其次,int a[]的方式聲明了一個本地變量,一經(jīng)聲明便分配了一段固定的連續(xù)的內(nèi)存單元。a是這段存儲單元的首地址,如同上邊說的一樣a是一個常量。int b[],b也是一個常量。常量 = 常量?這顯然是錯的。這就解釋了第二個問題。
? ? ? ?至于為什么把數(shù)組名設計為一個常量,希望有大神可以解惑^_^

TA貢獻4條經(jīng)驗 獲得超0個贊
1.首先一個數(shù)組,比如a[10] ,它的首地址a和指針不一樣,你不能再對a賦值,比如你寫的int b[10]; b=a;是錯誤的,
2.其次const修飾數(shù)組,比如const int a[10]= {1}; 說明里面的數(shù)據(jù)是常量,你再寫a[0] = 1之類出錯。
3. 還有const int a[10] = {1}中的a[0] = 1沒問題,但是a[0] 和const int b = 1 的b也有區(qū)別,比如:
????const int a[10] = {1}; int arr[ a[0] ] = {0}; 會出錯
????const int b=1; ? int arr[b] = {1} = {0}; ? 沒問題
????至于為什么,還不知道,希望大神解答。

TA貢獻17條經(jīng)驗 獲得超13個贊
數(shù)組名絕對不等于指針,而且不是指針。
數(shù)組名是指針常量,地址是絕對的,score指向受保護,但首地址的內(nèi)容可以改變,所以數(shù)組首地址應該是指針常量int *const score。
指針是一個變量,變量的值是另外一個變量的地址。那么,既然指針是變量,那么指針必然有自己的存儲空間,只不過是該存儲空間內(nèi)的值是一個地址值,而不是別的內(nèi)容。
摘自百度知道。

TA貢獻23條經(jīng)驗 獲得超6個贊
數(shù)組變量是一個指針,它指向的內(nèi)容是const int 類型。數(shù)組變量本身不用初始化它可以指向任何標示符,但它指向的內(nèi)容是不能被改變的
- 5 回答
- 0 關注
- 3977 瀏覽
添加回答
舉報