const关键字

const修改的变量是不能被修改的,也就是const用来定义常量。

const常量必须要被初始化。

int const a=3;                      //等价于const int a=3;

const int a=3;

int const *p = &a;                //等价于const int *p=&a;

const int *p = &a;             //常量指针    *p不可修改 *p = 8;(错误)

                                                                p可以修改   p = &b;(正确)

int * const p = &a;            //指针常量    *p可以修改 *p = 8;(正确)

                                                                p不可修改   p++ ;    (错误)

const int * const p = &a;   // *p 和 p均不可改变

const的定义                  

例1:

int main(){

  int const a=23;                        //正确      

  const int b=23;                        //正确。等价于int const b=23;          

       int const a;                              //错误,const常量必须要被初始化。

}

例2:

int main(){

  int const a=3;

  a=4;                                        //错误。a的值不能再被修改。const常量是不能被修改的。

}

例3:

int main(){

  int a=3;

  int const b=a;

  a=4;                                         //正确。b只是使用了a的值进行初始化。a仍然是普通变量。

  b=4;                                         //错误。b为const常量。

}

const 与#define的比较    

例4:define 与const的比较

#define MAX 30                             //发生时机:预编译时。简单的字符串替换,不具备类型检查功能。有可能会把错误带到运行时 

int main(){

  const int a=30;                         //发生时机:编译时。具有类型检查的功能。如果是要使用常量,推荐使用const关键字

}

常量指针与指针常量    

例1:常量指针:指向常量的指针

int main(){

  int a=4;

  const int *p=&a;                        //p指向a。等价于int const *p=&a;  

  *p =5;                                       //错误。const的作用是p指向的值不能被修改(即不能通过指针来改变变量的值),但是指针的值可以                                                         改变(即可以指向其他变量)。

}

例2:

int main(){

  int a=4;

  const int *p=&a;                        //定义常量指针。首先p指向a  

  int b=5;

  p=&b;                                       //然后p指向b,这是可以的。

  cout << "*p=" << *p <<endl;      //输出:*p=5 

}

例3:

int main(){

  int a=4;

  int * const p=&a;                       //定义指针常量。p所指向的变量的值是可以被修改的。但是p指针本身的值是不能被修改的。(即,                                                         指针只能指向这个变量,不能再指向其他变量) 

  *p=5;                                        //正确。 

  cout << "*p=" << *p  <<endl;     //输出5   

}

例4:

int main(){

  int a=4;

  int * const p=&a;

  int b=5;

  p=&b;                                        //错误。指针常量不能修改指针的值。

}

例5:

int main(){

  int a=4;

  const int * const p=&4;              //p指向的对象不能改,p本身的值也不能被修改。

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值