最近在複習c語言,就來說說關於我以前才開始學c語言很迷糊的乙個知識點:const關鍵字const關鍵字是用來定義唯讀變數的,說 const 定義的是變數,但又相當於常量;說它定義的是常量,但又有變數的屬性,所以可以叫常變數。用 const 定義常變數的方法很簡單,就是在定義變數時前面加 const 即可,如下:
const int a=2;//語句1
int const b=5;//語句2
以上**中,語句1就等於語句 2,沒有差別。用 const 定義的變數的值是不允許改變的,即不允許給它重新賦值,即使是賦相同的值也不可以。所以說它定義的是唯讀變數。這也就意味著必須在定義的時候就給它賦初值。
在**裡,區域性變數是儲存在棧中的,靜態變數是儲存在靜態儲存區中,而經過 const 修飾過的變數儲存在記憶體中的「唯讀資料段」中。唯讀資料段中存放著常量和唯讀變數等不可修改的量。
關於const修飾指標的時候,看下面這段**:
int n1=2,n2=5,n3=8;
const int *p1=&n1;//語句3
p1++;//可以
n1=20;//可以
(*p1)=20;//不可以
int const *p2=&n2;//語句4
p2++;//可以
n2=20;//可以
(*p2)=20;//不可以
int *const p3=&n3;//語句5
p3++;//不可以
n3=20;//可以
(*p3)=20;//可以
其實語句3和語句4是一樣的,因為這兩個裡面const修飾的是同乙個。關於const遇見指標,你就記住:const修飾的是什麼就看const的右邊是什麼。語句3和語句4裡面,const修飾的都是*p(**裡面就是(*p1)和(*p2)),即你不可以通過指標去改變指標指向的那個變數,但是那個變數本身不是const修飾的,變數本身是可變的,所以語句3中n1=20是合法的,但是(*p1)=20是非法的。語句5裡面const修飾的是p3這個指標,即你不可以改變這個指標的指向,但是這個指標指向的變數是可以被改變的,所以p3++是非法的,而n3=20是可以的。
歡迎交流:)
C語言中的const
c語言的中的const,代表的含義是 不可改變的變數 或者可以成為 偽常量 c 中 const,被稱為 乙個有型別描述的常量 const int liv num 10 liv num 18 error 因為liv num 被const修飾不可被直接賦值 那麼,我為什麼說是 偽常量 我們知道在c中給變...
C語言中的CONST使用
c中的const使用 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性。const的使用是c語言中乙個比較微妙的地方,請看下面幾個問題。問題 const變數 和 常量 為什麼下面的例子在使用乙個const變數來初始化陣列,ansi c...
C語言中const的使用
const and pass by value 使用乙個常量字首 const 可以避免傳址變數的修改 void f const string s 一些開發者即使針對傳值變數也用 const void f const int n n is passed by value,why const?const...