const學習總結

2021-07-03 12:59:07 字數 1054 閱讀 6533

const這個東東學習了很多次,每次學完過了一段時間就忘了,下次還是搞錯。這次自己總結下,順便印證下那句只有把自己學到的東西寫成教程才是真正學習到的名言

先看只有乙個變數的場景

原則:1. const永遠只修飾它右邊的那個變數,基礎型別的位置與const的位置可以互換,更精簡的一句話:const與基礎型別之間沒有*號時,const與基礎型別之間的位置可以互換。

例:int const i;        //i不能變

const int i;        //i不能變

這兩條語句是等價的。

int const *p1;

const int *p1;

這兩條語句也是等價的。

2. 如果語句中有表示指標的*號,那麼請記住所有的指標*號都是從右向左結合的

例:int const *p1;        //*p1不能變,即p1所指向的值不能變,因為*號修飾的只有p1

int* const p1;        //p1不能變,即p1不能指向其它地方了,因為*號修飾的是const p1

一句話來總結就是如果const在*號的左邊,指標指向的值不能變,如果const在*號的右邊,則是指標不能執行其它地方了。一句話:左定值,右定向

再來看有多個變數的場景

原則:1. const的作用範圍與型別的作用範圍是相同的

例1:int const a = 0, b = 0;

const int a = 0, b = 0;

這兩條語句是等價的,都是表示a、b的值均不能修改

int a = 0;

const int  *p1 = &a, *p2 = &a;

int const *p1 = &a, *p2 = &a;

上面兩條語句也是等價的,都是*p1、*p2不能改變

例2:int * const p1 = &a, *p2 = &a;

這條語句中,p1是不能改變指向的,但是p2可以。因為這個const與int之間有*號,所以他們的位置不能互換,*號是從右向左結合的,所以 (*const p1)是乙個整體,這就把上面這條語句的const作用範圍限定在p1這乙個變數中了。

const 學習總結

以前也有學過 const 對它了解 歸根結底只是了解 用法只限於簡單的使用沒有乙個深入的理解,用法1 代替巨集和常量 define max 1000 沒有了解 const之前 const int max 1000 有了const之後 用法2 引數 myfun string str1 以前的寫法 my...

C primer學習 const 總結

春節比較空閒,重新學習c 使用課本 c primer。學習到90頁,看到書中對const的解釋,於是在這裡對const總結了一下,發現原來有這麼多的注意事項 1.在c語言中const修飾的是全域性的唯讀變數 在c 中,const修飾的是不具有外部鏈結的常量,若要在其他檔案中使用,必須宣告為exter...

c 學習總結 復合型別,const。

複習c 有必要對一些東西做一下筆記,方便以後學習,如有問題,歡迎提出。首先,最常用兩種復合型別應該是引用和指標。所謂復合型別,是在基本型別基礎 如 int 上定義的型別。引用是c 的乙個復合型別,首先,它和指標不同的是它並不是乙個物件,僅僅只是另乙個物件的別名。而且,引用繫結的東西必須是乙個物件,引...