c語言關於const的面試常識

2021-06-18 03:28:09 字數 1344 閱讀 7828

今天晚上琢磨了乙個晚上,終於大致弄明白const的用法其總結如下:

關於const的含義:

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前兩個的作用是一樣,

a是乙個常整型數。第三個意味著

a是乙個指向常整型數的指標(也就是,整型數是不可修改的,但指標可以)。第四個意思

a是乙個指向整型數的常指標(也就是說,指標指向的整型數是可以修改的,但指標是不可修改的)。最後乙個意味著

a是乙個指向常整型數的常指標(也就是說,指標指向的整型數是不可修改的,同時指標也是不可修改的)。我之前也難以看出,究竟那個是變的,那個不變?必須提醒一下*a是代表值而a是代表指標。那麼就有一下的結論了

1)const在前面(即放在型別前面)

const int a; //a是const

const char *a; //*a是const, a可變

const char* const a; //a和*a都是const

2)const在後面,與上面的宣告對等

int const a; //a是const

char const * a; //*a是const, a可變

char* const a; //a是const,*a可變

char const* const a; //a和*a都是const

特例分析:

const int *a、int const *a、int *const a三種特例

①const int *a (

整型數是不可修改的,但指標可以)::

:②int const *a【暫時不知道】::

:③int *const a (

指標指向的整型數是可以修改的,但指標是不可修改的) :

::然後把上面的進行一一對應:

①const int *a(

整型數是不可修改的,但指標可以)

對應:       const char *a(*a是const,a是可以改變)

②int const *a【暫時不知道】

對應           char const *a(*a是const,a是可以改變)

從而得除const放在修飾型別的前面或者後面,不影響結果

③ int *const a(指標指向的整型數是可以修改的,但指標是不可修改的)

對應           char *const a(*a是可以改變的,a是const)

結論:const與誰靠得最近就影響到誰,const放在資料型別(char、int ......)前後都是相同的。

c語言中關於const的使用

const是c語言中乙個十分重要的修飾 我總結了它的含義使用以及作用如下 1.修飾的資料型別是常型別,常型別的變數或物件的值不能被改變 const int i 10 int a i 等價於int a 10 2.便於進行型別檢查,使編譯對處理內容有更多的了解,消除了一些隱患。3.方便的進行引數的調整和...

C語言關於const的那點事兒

const應該是單詞constant的縮寫,意思是永恆的不變的。const這個關鍵字用得到的地方很多,用的方式也很多,因此讓人疑惑的地方也比較多,今天做個總結。const int a int const a 都是把a常量化了,告訴大家不要修改a的值,如果你非要修改a的值 const int a 10...

C語言的幾個小常識

char s 20 與 char s 20 的區別 char s 20 表示在棧上分配了20個字元空間,該空間的首址為s char s 20 表示乙個指標陣列,該陣列有20個成員.每乙個成員都是乙個指標 p 與 p 的區別 p 表示 取 p的值後p的位址加1 p 表示取 p的值後 p指向的值加1 g...