C 初學者對於const的理解

時間 2022-03-08 17:00:20

1樓:

這問題多看書 這本書沒有描述清楚或者你看不明白

換一本看 還不明白就用**

const a *const func(a * const one)

首先這是一個指標函式 首先去理解什麼是指標函式

指標函式是指返回值是一個指標 const a* cosnt 型別

就像理解 cosnt int × const p 一樣 前面一個cosnt 修飾p 指喜向的內容不可改變

也就是 const *p = a ; 不可以在 p = b ; 後一個就是 修飾的是p 的地址。指標變數也是有地址的

這個應該學過指標的都知道 , int * const p 就是說 p 這個指標變數本身的地址不能修改。

這個東西你可以去做實驗的 首先p 不加const 輸出 p的地址空間看看 然後再修改它的地址空間看看看值是不是真的變了 換成const 之後 在修改 看看編譯器是否報錯 ! 來證明自己的理解正確

(a *const one) 你自己看看你修飾的位置是** 是one 指向的位置不能變 還是自己本身地址不能變 然後再寫成 cosnt a *const one 在看看結果

你實驗做的太少了

2樓:犬蟲門心西安

const a *const func(a * const one)

這樣理解:

先說形參a * const one,const用來修飾one,說:one被定義為一個「只讀」的變數(空間),即,形參變數one是不能被修改的;

再說const a * const func()

首先,整體上,它是對func()函式返回值的型別說明。先去掉所有的限定,這個函式應該返回a類的指標;

最右側的const在說明,這個指標是「常量」(不可修改的);

最左側的const在說明,這個指標所指向的空間是a類例項空間,而這個例項空間也必須是「常量」(只讀)。

關鍵在對於最左側的const修飾的物件要清楚:這個const不是修飾指標的,而是修飾指標所指向的空間的。

3樓:

我的理解與朋友們有些不同,說出來互相借鑑。

const a* const func中的兩個const都是修飾func返回的a型別指標的。前一個const是說這個返回指標指向的內容是「不可更改」的,第二個const是說這個返回的指標的指向也是「不可更改」的——一句話,func返回的指標既不能被賦新值而指向別處,它指向的內容也不允許重新賦值。func(a* const one)中的const就是上述第二個const的作用,使one的指向「不可變更」,而其指向的內容即*one可以變更。

4樓:

c++初學者的問題:this指標和const常量的問題

5樓:匿名使用者

c++中const 引用的是物件時只能訪問該物件的const 函式,因為其他函式有可能會修改該物件的成員,編譯器為了避免該類事情發生,會認為呼叫非const函式是錯誤的。

函式末尾加const,表示不會修改該物件的成員。

c++中 const的作用是什麼

6樓:秒懂百科

const:一個c語言的關鍵字

7樓:

限定修改 ,比如const int i=2;

那麼在後面i的值是不能修改的,另外const限定定義變數以後必須賦初值

又比如const的引用

const int i=2;

const &a=i;

a為i的一個引用,也是不能修改的,這一點在函式引數傳遞的時候用的比較多

另外還有個神奇的事情

const &a=i+2;

const &a=5*5+1;都是允許的,但是換成普通的引用是不允許的

又比如在定義陣列的時候

const i=2;

int a[i];

是可以的,這個時候可以看作常量

但是int i;

cin>>i;

const int a=i;

int b[a];是不允許的,因為陣列是不能動態定義的(不過可以申請動態陣列)

c++ 在函式後加const是什麼意思?

8樓:

const是一個c語言的關鍵字,它限定一個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性,另外,在**別人**的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。

9樓:匿名使用者

說明這個函式不改變類中的成員變數。

10樓:恩惠妮阿加西

c++ 在函式後加const的意義:

我們定義的類的成員函式中,常常有一些成員函式不改變類的資料成員,也就是說,這些函式是"只讀"函式,而有一些函式要修改類資料成員的值。如果把不改變資料成員的函式都加上const關鍵字進行標識,顯然,可提高程式的可讀性。其實,它還能提高程式的可靠性,已定義成const的成員函式,一旦企圖修改資料成員的值,則編譯器按錯誤處理。

const成員函式和const物件 實際上,const成員函式還有另外一項作用,即常量物件相關。對於內建的資料型別,我們可以定義它們的常量,使用者自定義的類也一樣,可以定義它們的常量物件。

對於初學者如何快速學好輪滑,對於一個初學者如何快速學好輪滑?

無語翹楚 在穿鞋之前做必要的熱身活動,從頸部 手部 腰部 腿部到腳關節要全部活動到,令筋骨徹底舒 初學者穿好鞋後首先要練習如何站穩,穿好輪滑鞋後慢慢扶住支撐物起身,將雙腳互相緊靠,擺成大寫的t字,這樣就可以穩穩地站住了 接下來學習如何 走 走得熟練後自然可以慢慢地滑起來。初學者若覺得在馬路上滑動厲害...

初學者C語言的問題,新手C語言問題

你說的是dev cpp麼?define應該是你的一個筆誤吧!呵呵。devc中可以直接用中文啊,沒有發現你說的問題,我都是直接使用的哦!俺用的是vc,倒是沒有這些問題 應該用 define 定義一個巨集,即將pi的內容用進行物理替換,樓主錯用了 defind 建議使用const float pi 代替...

對於初學者來說,網球避震器有用嗎

建議初學者使用避震粒,因為其對減少震動的確有一定作用。首先我們要了解每次擊球時拍弦都會產生震動,傳到到拍體,進而傳到拍柄,而這個震動的大小由於不同球拍的材質,採用的技術也有所不同,但現在還沒有什麼球拍能夠完全將震動消除,所以,對於業餘選手來說,擊球時就要儘可能減小球拍傳到手臂的震動,這時可以採用的方...