原文 : http://www.dansaks.com/articles/1999-02%20const%20T%20vs%20T%20const.pdf
原文我就不再贅述了,裡面的文章讀者們花一些時間就能閱讀完,不多,才三頁而已。 這一篇文章我打算直接寫code來解釋const 。
1. Const int a ;
2. Int const a ;
1 和 2是一樣的,就是a這個變數是完全不能修改他的 !
3. Const int *a ;
第三題的話就是表示a是一個指向常數型整數的pointer ( 也就是說 整數的部份不可以修改,但是pointer可以修改 )
Ex :
{
const int * a ;
printf ("a:0x%x \n"); //0x18FF28
int b , c ;
b = 20 ; //0x18FF1C
c = 30 ; //0x18FF10
a = &b ; //now a = 0x18FF1c ,*a : 20
b = &b ; //now a = 0x18FF10 ,*a : 30
a = 100 ; // now will show error message !
// error C3892: 'a' : you cannot assign to a variable that is const
}
4. Int * const a;
第四題的意思是a 是一個指向常數型的pointer (也就是說pointer指向的value是可以修改的,但是pointer是不可以修改的)
Ex :
{
int *const a = new int ;
*a = 50 ;
printf ("a:%d , a:0x%x \n" , *a , a ) ; //50 , 0x6e1cc8
*a *=50 ;
printf ("a:%d , a:0x%x \n" , *a , a ) ; //250, 0x6e1cc8
int b = 30 ;
a = & b ; // now will show error message !
// error C3892: 'a' : you cannot assign to a variable that is const
delete a ;
}
5. Int const * a const ;
第五題其實可以不太用解釋, a 就是一個指向常數行整數的常數型pointer (也就是說,Pointer指向的value不能動,同時,Pointer 也不能動 ) 。
留言列表