您好,欢迎来到爱站旅游。
搜索
您的当前位置:首页C++中const 修饰指针、函数形参

C++中const 修饰指针、函数形参

来源:爱站旅游

1. const通常用来修饰变量不能够更改值,多用来保护变量或参数。

 

[cpp]  


2. 当const修饰指针时,由于const的位置不同,它的修饰对象会有所不同。

 

 

[cpp]  

  1. int a = 0;  
  2. int b = 100;  
  3. int *const p2 = &a;//p2指向了a的地址,p2只能指向a的地址  
  4. //p2 = &b;错误  
  5. //p2是一个常量指针,p2只能指向固定的一个变量地址,但可以通过*p2读写这个变量的值  
  6. *p2 = 7;  
  7. printf("b = %d\n", a);  

 

 

 

 

 

[cpp]  

  1. int a = 0;  
  2. int b = 9;  
  3. const int *p = &a;//p可以指向一个int类型的地址,但不可以用*p的方式修改这个内存的值(这种情况const和int可以互换)  
  4. //*p = 10;错误  
  5. printf("%d\n", *p);  
  6. p = &b;  
  7. printf("%d\n", *p);  

4. 防止传入的参数代表的内容在函数体内被改变,但仅对指针和引用有意义。因为如果是按值传递,传给参数的仅仅是实参的副本,即使在函数体内改变了形参,实参也不会得到影响,但是有修改语句的时候会报错。

const修饰的函数参数是指针时,代表在函数体内不能修改该指针所指的内容,起到保护作用,在字符串复制的函数中保证不修改源字符串的情况下,实现字符串的复制。

[cpp]  

  1. void fun(const char * src, char * des){  //保护源字符串不被修改,若修改src则编译出错。  
  2.     strcpy(des,src);  
  3. }  
  4. void main(){  
  5.     char a[10]="china";  
  6.     char b[20];  
  7.     fun(a,b);  
  8.     cout<<b<<endl;  
  9. }  

而且const指针可以接收非const和const指针,而非const指针只能接收非const指针。

应尽可能使用const

使用cosnt可以避免无意总修改数据的编程错误

使用const使函数能够处理const和非const实参,否则将只能接受非const数据

使用const引用使函数能够正确生成并使用临时变量(将c字符串传给string)。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务