首页 > 代码库 > 2017.2.15

2017.2.15

1.const用法:

       1.c与c++ const对比

          c中的const量,只是一个可读的变量,可以通过强制转换其指针来改变值。

。 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     const int c=0;
 6     int * p=(int*)(&c);
 7     *p=1;
 8     printf("%d\n",c);       //用gcc编译c=1,用g++编译c=0
 9 }                              

        c中const量不能用于数组

1 const int d=82 int len[d];           //error

 

          

       2. 指向常量的指针和常指针

1 const int *pointer 
2 int *const pointer   

           c++强类型转换一般约束只会增强,不会削弱。

           比如:

1 int a=0;
2 const int b=0;
3 const int *pointer(&a)   //正确
4 const int *pointer(&b)   //正确
5 int *cosnt pointer(&a)   //正确
6 int *cosnt pointer(&b)   //错误

           3,4两行无论是const还是非const变量的地址,对于指向常量的指针都无关紧要。

           而第6行,把const变量的地址赋给常指针(可以修改值),类型转换某种意义上是削弱了,不能通过const变量的地址来修改值。

      

 

  

 

    

 

2017.2.15