const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。
const關鍵字使用非常的靈活,這一點和php差別很大,php中const用來在類中定義一個常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起來也是非常的靈活。
一、const用來修飾普通的變數(指標變數除外)的時候,const type name 和 type const name 這兩種形式是完全等價的,都表示其是常量,不能進行修改。
二、const用來修飾指標變數的時候,分為以下四種情況
1、const type *name :這種情況下,const修飾的指標變數name所指向的type型別物件,也就是說指向的這個物件是不能進行修改的,因為其是常量,而指標變數確實可以進行修改的。
2、type const *name :這種情況下,const修飾的指標變數name所指向的type型別物件,意思完全同上,只是顛倒了以下順序。
3、type * const name :這種情況下,const修飾的指標變數name,也就是說這個指標變數的值是不能進行修改的,但是指標變數所指向的物件確實可以修改的。
4、const type * const name :這種情況下,const修飾的指標變數name以及指標變數name所指向的物件,也就是說這個指標變數以及這個指標變數所指向的物件都是不能進行修改的。
擴充套件資料
使用const在一定程度上可以提高程式的安全性和可靠性。另外,在觀看別人程式碼的時候,清晰理解const所起的作用,對理解對方的程式也有一定幫助。另外CONST在其它程式語言中也有出現,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
在c中,對於const定義的指標,不賦初值編譯不報錯,int* const px;這種定義是不允許的。(指標常量定義的時候對其進行初始化)int const *px;這種定義是允許的。(常指標可以再定義的時候不初始化)
但是,在C++中int* const px;和const int* const px;會報錯,const int* px;不報錯。必須初始化指標的指向int* const px = &x;const int* const px=&x;強烈建議在初始化時說明指標的指向,防止出現野指標!
const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。
const關鍵字使用非常的靈活,這一點和php差別很大,php中const用來在類中定義一個常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起來也是非常的靈活。
一、const用來修飾普通的變數(指標變數除外)的時候,const type name 和 type const name 這兩種形式是完全等價的,都表示其是常量,不能進行修改。
二、const用來修飾指標變數的時候,分為以下四種情況
1、const type *name :這種情況下,const修飾的指標變數name所指向的type型別物件,也就是說指向的這個物件是不能進行修改的,因為其是常量,而指標變數確實可以進行修改的。
2、type const *name :這種情況下,const修飾的指標變數name所指向的type型別物件,意思完全同上,只是顛倒了以下順序。
3、type * const name :這種情況下,const修飾的指標變數name,也就是說這個指標變數的值是不能進行修改的,但是指標變數所指向的物件確實可以修改的。
4、const type * const name :這種情況下,const修飾的指標變數name以及指標變數name所指向的物件,也就是說這個指標變數以及這個指標變數所指向的物件都是不能進行修改的。
擴充套件資料
使用const在一定程度上可以提高程式的安全性和可靠性。另外,在觀看別人程式碼的時候,清晰理解const所起的作用,對理解對方的程式也有一定幫助。另外CONST在其它程式語言中也有出現,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
在c中,對於const定義的指標,不賦初值編譯不報錯,int* const px;這種定義是不允許的。(指標常量定義的時候對其進行初始化)int const *px;這種定義是允許的。(常指標可以再定義的時候不初始化)
但是,在C++中int* const px;和const int* const px;會報錯,const int* px;不報錯。必須初始化指標的指向int* const px = &x;const int* const px=&x;強烈建議在初始化時說明指標的指向,防止出現野指標!