const的定義與賦值

2021-06-14 06:08:31 字數 1221 閱讀 3769

這個const的定義很奇怪,很繞.

比如int main()

{// const int a; //這條語句是錯誤的,const在定義的時候必須初始化==賦值

const int a=1; //整型常量a不可以再賦值比如a=2

const int *p; //定義的時候可以不初始化,因為可以指向別的資料

int b=2;

p=&b; //整型常量指標可以指向整型資料

// p=&a; //也可以指向整型常量

// *p=5; //但是不可以用*p來賦值

// int * const p1; //這條語句const出現在右邊p1的前面,表示p1是常量指標,需初始化

int * const p1=&b;

// p1=&a; //常量指標不能再賦值,但是可以用*p1來修改值

*p1=20;

// int const d; //同上面的整型常量a一樣,需初始化.

int const d=100;

// int * const e=&d; //不可以

int const *e=&d; //等價於const int *e=&d;

// *e=200;

e=&b;

const * int p2; //等價於const int *p2;可以不初始化

p2=&b;

// *p2=30;

cout<<*p,定義的是指標常量還是常量指標或是整型常量.

不需要初始化的

const int *p等價於const * int p等價於int const *p

需要初始化的

int * const p1=&***;

int const p1=1000;等價於int const d=1000;

const的右邊帶有*就表示可以指向別的資料但是不可以用*來修改

const的右邊不帶有*的表示必須初始化,但是可以用*來修改指標的值(除整型常量外).

const與非const型別賦值問題

非指標型別const int c a 10 int b 20 b c a 正確 c a b error!關於這個問題,網上有說 非const變數賦給const變數,是非法的 請不要陷入這種容易混亂的邏輯。上述情況,比較正確的解釋。const int 在初始化之後,是不能再改變的。且const int...

const與非const型別賦值問題

const與非const型別賦值問題 以前總有個問題想不通,就是為什麼從const char到char的賦值就會出錯,而const int到int的賦值就沒問題呢?呵呵,不知道有沒有其他新手和我有相同的疑問呢?還算我運氣好,今天不知道怎麼會觸發了靈感,終於把這個小白問題想通了。答案就是 從const...

const定義常量與巨集定義的區別!!!

巨集定義語法格式 define 巨集名稱 巨集值 不加分號,變數名一般設為大寫 巨集的替換與計算 舉乙個例子 define n 3 1 define y n n 1 n 若執行語句 z 2 n y 5 1 後 z 的值為多少?z 2 3 1 3 1 1 5 1 60 巨集的替換在 執行的預編譯階段,...