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 }