這個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 巨集的替換在 執行的預編譯階段,...