c/c++ const 的用法
2013-10-22 17:31
218 查看
#include <stdio.h> int main() { /* const int* a; int const *a; 这种修饰方式为常量指针 只能修改指针a的指向,不能修改a指向的内容 传过来的这个变量为一个常量,你可以指我,用我,但是你不能修改我 printf("*****************\n"); int i = 1, j = 2; const int *p1 = &i; printf("%d\n",*p1); p1 = & j; printf("%d\n",*p1); //*p1 = 10;*/ /* int * const a; 这种修饰方式为指针常量 只能修改指针指向的内容,但不能修改指针的指向, 即指针的地址为一个常量,它就指向这个地址空间,不能再被改变了 printf("*****************\n"); int i = 1, j = 2; int* const p1 = &i; printf("i = %d\n",i); *p1 = 10; printf("*p1 = %d,i = %d\n",*p1,i); // p1 = &j; //错误 不能修改p1的指向*/ /* const int *const a; 这种方式为指向常量的指针常量 不能修改指针指向的内容,也不能修改指针的指向,需要声明时初始化 就是你既然来了你就别走了,别动我,但是你也不能把我的秘密带走; printf("*****************\n"); int i = 1, j = 2; const int* const p1 = &i; printf("*p1 = %d i = %d\n",&p1,i); // *p1 = 2; //错误,不能修改指向的内容的值 // p1 = &j; //不能修改指向*/ int i = 1,j = 2; const int t = 3; const int *p = &t; // *p = 10; 不能修改指向的内容 // t = 5; t为常量 p = &i; //常量指针可指向非常量或常量 // int *p1 = &t; //非常量指针不可以指向常变量 // int* const p1 = &t;//指针常量不能指向常变量 printf("*p = %d\n",*p); /*const修饰函数参数: 1.const 修饰函数参数是,只能修饰输入参数,对于输出参数,会失去输出功能 2.如果输入参数采用指针传递,那么加上const修饰可以防止 意外的改动指针指向的单元的内容,起到保护作用 如:void fun(char* str1,const char* str2); str可以随意改动,但是当做*str2 = 1的时候就会报错 如果还想保护指针本身,可以这么写(const char *const str) 这样指针的指向不能变动,指向的内容也不能变动 3.对于面向对象编程,参数若为一个类的对象,最好用& 若用void fun(A a)这样注定效率比较低,因为函数体内要做拷贝,建立 临时对象,就要调用构造,拷贝,析构,都要消耗时间. 当用&的时,引用传递紧借用参数的别名(本质上市地址传递),不需要产生 临时对象,但是函数void fun(A& a)存在一个缺点,那就是函数体内可以修改a。 这在很多情况是我们不期望的,觉得问题就是加上const修饰符就行了 void fun(const A& a) */ return 0; }
相关文章推荐
- C/C++中const关键字的用法及其与宏常量的比较
- C++中const用法总结
- C++中const用法总结(转)
- C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
- C++中const、volatile、mutable的用法
- c++基础:新标准constexpr基本用法及其他注意点
- C/C++ const用法注意
- C++中const关键字用法详解及实例和源码下载(二)
- C++ const用法总结
- C++中const、volatile、mutable、explicit的用法
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
- c++中const用法总结
- C++有关const用法的详解
- C/C++语言中const的用法
- C++中CONST的用法
- c++ const用法总结
- C++中const用法总结
- C/C++ 中 const 修饰符用法总结
- C++ const的用法(转)
- C++中const用法浅析