关于const 限定符的一些概念
来源:互联网 发布:南京软件开发培训 编辑:程序博客网 时间:2024/06/11 02:16
1.定义const对象
用一个变量来代表某一个常数的方法会出现一个问题,比如 int size=10; size 的值是可以被修改的,const限定符提供了一个解决办法,它把一个对象转换成一个常量 const int size=10; 定义size 为常量,并且初始化为10,并且不能被修改,否则会导致编译错误.这里需要注意的是因为常量在定义后就不能被修改,所以定义时必须初始化.
2.const 对象默认为文件的局部变量
在全局作用域里面定义非const 变量时,它在整个程序中都可以访问。我们可以把一个非const变量定义在一个文件中,假设做了合适的声明,就可以在另外的文件中使用这个变量:
//file_1.c
int size; //definition
//file_2.c
extern int size; //use size from file_1
++size;
与其他变量不一样,除非特别说明,在全局作用域声明的const变量是定义在该对象的文件的局部变量,此变量只存在于那个文件,不能被其他文件所访问
3.指向const对象的指针
如果指针指向一个const对象,那么不允许用指针来改变所指的const值,为保证这个特性,c++语言强制要求指向const对象的指针必须具有const特性:
const double *cptr; 这里的cptr是一个指向double类型const对象的指针,const指定了cptr所指向的对象类型,而并非cptr本身,也就是说,cptr本身并不是const,在定义的时候不需要对它进行初始化,如果需要的话,允许给cptr重新赋值,使其指向另一个const对象,但不能通过cptr修改其所指对象的值
把一个const对象的地址赋给一个普通的,非const对象的指针也会导致编译的错误:
const double pi=3.14;
double *ptr=π // error:ptr is a plain pointer
const double *cptr=π // ok:cptr is a pointer to const
允许把非const对象的地址赋给指向const对象的指针
double pi=3.14;//pi is a double
cptr=π // ok ,but can't change pi through cptr;
在程序中,指向const的指针常用作函数的形参。将形参定义为指向const的指针,以此确保传递给函数的实际对象在函数中不因为形参而被修改.
4.const指针
除了指向const对象的指针,c++还提供了const指针---本身的值不能修改:
int size=10;
int *const ptr=&size;// ptr is a constant pointer
ptr是指向int 型对象的const指针,与其他const量一样,const指针的值不能被修改,这就意味着不能使ptr指向其他对象,任何企图给const指针赋值的行为都会导致编译错误。指针所指对象的值能否修改完全取决于该对象的类型。
5. 指向const对象的const指针
既不能修改const指针的值,也不能修改const指针指向的const对象的值
- 关于const 限定符的一些概念
- 关于const限定符
- 关于const 限定符
- 关于C/C++的限定符const
- 关于两种复合类型--引用和指针以及const常量限定符的一些总结
- 关于const限定符和const引用的讨论
- 关于const 限定符总结
- C++中const限定符的一些用法
- C++中const限定符的一些总结
- const限定符的使用
- const限定符的讨论
- const限定符的使用
- const限定符的作用
- const限定符的理解
- 类的const限定符
- 关于const限定的字符指针
- C++ const 限定符 指针的使用方法
- const限定修饰符的各种用法
- 中国人必须知道的76个常识
- 设计客户化标签 TLD
- Android 程序组件之间交互
- Android 入门到精通 (三)(界面编程#1-从Button说起)
- VS2008 "找不到一个或多个组件,请重新安装该应用程序"
- 关于const 限定符的一些概念
- 求助
- 面试归来
- 从不是创建控件“label1”的线程访问它。
- mysql的八小时保护机制
- Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用
- Excel2007 & WPS 冻结窗格
- VC6下实现透明对话框!
- SQL Select Into语句