1 #include<stdio.h> 2 int main() 3 { 4 const int a=0;//聲明只讀變量a為0 5 int* p=(int*)&a;//給個指針指向a的空間 6 *p=100;//改變a的存儲空間的內容 7 printf("a=%d",a);//a被更改為100 8 return0; 9 }
1 #include<iostream> 2 usingnamespace std; 3 int main() 4 { 5 const int a=0;//聲明只讀變量a為0 6 int* p=(int*)&a;//給個指針指向a的空間 7 *p=100; 8 cout<<a; 9 return0; 10 }
1 constint a=10; 2 constint b=20; 3 int c[a+b];
上面的代碼在C中會報錯“無法確定數組長度”,因為在C中const只是個只讀變量,本質上還是變量,有存儲空間,定義數組長度用變量當然會出錯了。 但在C++中卻可以編譯通過,因為C++對const做了加強,使得const是真正意義上的常量。
1 #include<iostream> 2 usingnamespace std; 3 int f(){ 4 cout<<B<<endl; 5 } 6 int g(){ 7 #define N 3//只希望在這個函數中用N=3 8 constint a=100;// 希望在這個函數中用 a=100 9 } 10 #define B 1 11 int main() 12 { 13 cout<<N<<endl; 14 f(); 15 return0; 16 }
1 #include<iostream> 2 usingnamespace std; 3 int f(){ 4 constint a=100;//只希望a=100的作用域在f()中 5 } 6 } 7 int main() 8 { 9 cout<<a<<endl;//出錯,沒有定義a,因為a作用域只在f()中 10 return0; 11 }
1 int g(){ 2 #define 3 int a=10; 4 #undef 5 }
1 int main() 2 { 3 int a=1; 4 int b=100; 5 (a<b?a:b)=50; 6 printf("%d %d",a,b); 7 }