对const的理解
来源:互联网 发布:aes加密mc矩阵 编辑:程序博客网 时间:2024/05/19 17:10
const是一个C中类似修饰符。
常见的数据类型修饰符有哪些?
short long unsigned signed static auto extern register,volatile
如何定义一个变量?
类型描述符 变量名
类型描述符包括 类型的修饰符以及数据类型 int char float ,以及自己定义的数据类型……
(1)类型描述符中,如果有多个关键字,他们出现的顺序不影响他对变量的限制
short int i;int short i;
static int short i;int static short i;
const int a;int const a;
以上表达完全一样,描述的都是一个const的整形变量。
(2)
const int * a;int * const a;int const * const a;
对指针变量类型的理解:
(a)*在数据定义时与在表达式中一样的理解,例如:
int * a[10]; //因为[]优先级高于*,因此是一个数组,每个成员类型为指针,指向intint (*)a[10]; //因为()优先级高于[], 因此,先看里面,是一个指针,指向的类型为一个数组。
(b)指针的判断从右向左。
const int * a; //a是变量名,*表示他是一个指针(类型已经确定),余下的是指向的类型。 //因此,a是一个指向const int的指针,即指向的数据不可修改。int * const a; //*const 一起来修饰a,即a只读,*表示a是一个指针 //因此,这是一个只读的指针,指向的类型为int型的变量int const * const a; //*表示指针,因此,指针不可修改,int const 是指针指向的类型,仍然是const
在编程中能用const的地方要尽量使用const
const存储在只读区域
typedef void * VP;const void * ptr; //指针变量,指向const void 常量const VP ptr; //const 指针,指向void变量 //他们存储的位置不一样
首先要理解typedef是定义一种数据类型,与define区分开,define是简单的替换
typedef void * VP; //VP是名字,余下的是这个类型的真是类型const VP ptr; //并不是简单的替换为const void * ptr!!, void * 是一个整体,const int i; == int const i;VP const ptr; == void * const ptr;
作用:
(1)向其他程序员传递一个信息,这个不要修改
(2)有可能让编译器产生更精简的代码,减少bug
(3)合理的保护只读数据,避免不必要的修改
使用位置:
(1)定义常量,防止被修改
(2)在函数参数中,如果不期望子函数去修改被调用函数的某个数据,可以加以限制。例如:
char * strcpy(char * dest, const char * src);char * strncpy(char * dest, const char * src, size_t n);
(3)在c++中类的成员函数的使用
0 0
- 对const的理解
- 对const的理解
- 对const使用的理解
- 对const使用的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- [ZT] 对const使用的理解
- 我对const的一点理解
- 【转】对const关键字的理解
- [C++学习] 对const变量的理解.
- C语言对const的理解
- c++中对const关键字的理解
- 对const和static的理解
- C语言中对const的理解
- 对const和引用的新理解
- 对 const char* const &a 的理解
- DevOps简介
- android 启动界面的定制
- SQL 执行顺序 小知识点
- 我眼中的DevOps
- C++学习笔记0:重拾C++,开启博客笔记之旅
- 对const的理解
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
- 圆桌骑士 图的连通性
- 5个好用的开源数据挖掘软件
- 你了解DevOps吗?
- CSS 选择器
- xargs命令详解,xargs与管道的区别
- 虚拟机桥接模式下设置静态IP地址无法上网
- 我们离DevOps多远?