C语言零星笔记--(const、typedef)
来源:互联网 发布:大数据阅读答案 编辑:程序博客网 时间:2024/05/27 00:59
好不容易偷闲,去逛了下论坛,这手贱的又点到了技术区,看了个哥们的问题,就是const和typedef结合在一起会出现什么情况,那百度和360结合会是什么况。。。。
描述下问题:
typedef int* p2i;int a = 2;int b = 3;int c = 4;const int *pa = &a; //不能用pa修改a的值,*pa = valueconst p2i pb = &b;//pb不能指向其他地址,pb = valuep2i const pc = &c;//pc不能指向其他地址,同上。
这里涉及了两点:(1)const的先左还是先右结合 (2)typedef的效果 (3)变量的类型
(1)const 向左走向右走:const的意义就是只读,读书,“只读经典型”,就是const先向右走,如果右侧有类型符,如int,float、、之流,就跟类型符结合。若没有,则向左走,跟左侧的*符结合。
(2)typedef与#define有区别,其中之一就是typedef封装性,或者叫原子性,即通过typedef将目标封装成整体,并起了个新的名字(典型贴牌山寨机)。但效用等价。
对于const int *pa = &a;
(3)变量的类型:就是这是个什么变量,找到变量,查看其右,若为(),则表示函数,若为 [ ] 则为数组,查看其左,左侧为 * ,则表示指向 XXoo 的指针。
则const int *pa = &a,const与类型为int 的类型结合,pa与 *结合,综合起来:pa是个指针,一个指向只读整形的指针。即pa指向的内容不能变。但pa的指向可以变。
const p2i pb = &b:pb右侧无(),[ ],即pb非数组,也不是函数,左侧没见到指针符号 *(被封装了),故pb仅仅是个变量,类型为只读p2i型的变量,将p2i的意义加进去,pb就是个只读指针变量,即指针的指向不能改变,指向的地址里的内容可以改变。
对于p2i const pc =&c,理解了typedef的封装性,其实雷同于 int const x 和const int x ,所以,这种情况的意义同上。
- C语言零星笔记--(const、typedef)
- C语言笔记(typedef, 缓冲)
- c语言----#define、const、typedef的差别
- 【笔记-C语言】 const
- C语言笔记之typedef
- [C++] typedef和const
- 【黑马程序员】C语言学习笔记之typedef(十五)
- c语言学习笔记(5)enum和typedef分析
- C语言(结构体、枚举、typedef)笔记 by STP
- C语言声明:const、typedef、define及函数高级声明
- C语言中-const,volatile-struct,union-enum,typedef,define
- C语言学习笔记 typedef用法
- c语言学习笔记之const关键字(理解)
- C----extern,static,typedef,const
- android 零星调试笔记(二)
- C语言深度解剖——读书笔记-3、关键字(const、 volatile、extern、struct、union、enum、typedef)
- C语言笔记之const关键字
- 笔记|C 语言 const 的用法
- 对象的属性
- Android之Fragment(官网资料翻译)
- <<黑马程序员>>java基础之正则表达式
- JAVA解析XML的四种方式
- double 保留小数点后两位数
- C语言零星笔记--(const、typedef)
- POJ 2503 Babelfish
- HTTP 返回状态值详解
- URL编码和解码
- Android回调机制
- Python的functools模块
- UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
- 基本数据结构之线性表-链表
- HashSet的使用