今天晚上琢磨了乙個晚上,終於大致弄明白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...