const,typedef与define
来源:互联网 发布:mysql update 阻塞 编辑:程序博客网 时间:2024/05/18 00:51
const 指针:
int const *p;// p指向一个int类型,可以改变p得指向位置,但不能改变p指向位置的值。
int * const p;// p指向一个int类型,不能改变p指向的位置,但可以改变p指向位置的值。
通过判断const在*得位置来判断p是常量指针还是指向位置的值不能改变。
前者const修饰的是指针指向的位置*p
后者const修饰的是指针p
我们知道,define和typedef两者有明显区别。
define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错
typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition
虽然知道二者的区别,但是实际使用过程中还是容易犯错
比如
typedef int INT;
#define int INT;
都是INT表示int
但是当修饰指针的时候
1.#define TYPE* pint //pint也为指向一个TYPE的指针
2.typedef TYPE* pint; // pint 为指向一个TYPE 的指针
pint都是表示 TYPE*的意思
接下来:
1. const pint p;
替换过后:const TYPE* p;
声明了一个指针p,该指针指向TYPE类型,const修饰的是*p
2.const pint p;
声明了一个指针p,该指针指向TYPE类型,const修饰的是p
typedef int* pint;typedef const int* cpint;int main(){int a = 10;int b = 5;pint p1 = &a;const pint p2 = &a;cpint p3 = &a;const cpint p4 = &a;*p1 = 6;//正确 p1 --int* p1 *p2 = 6;//正确 p2 --int * const p2 是一个常指针,指向a,可以改变a的值*p3 = 6;//错误 p3 --int const *p3*p4 = 6; <span style="white-space:pre"></span>//错误 p4 --const int* const p4 既不能改变p4指向的位置,也不能改变指向位置的值p1 = &b;//正确 p2 = &b;//错误p3 = &b;//正确p4 = &b;//错误return 0;}
- #define、typedef与const
- const,typedef与define
- define与const、inline、typedef的区别
- typedef define const
- define,typedef,const
- define const 和 typedef
- #define typedef #ifdef const
- 区别const、#define、typedef
- const、typedef 、 define总结
- define typedef const用法
- #define \const\ typedef
- typedef define const
- const,#define和typedef
- define typedef const
- C++中 #define与const、inline、typedef的区别
- C++中 #define与const、inline、typedef的区别
- typedef与#define和const的用法区分
- #define、const、typedef的差别
- android shape绘制组件边框
- Eclipse 搭建Spring Struts2
- 程序员如何留住健康?
- java接口编程题
- oracle执行update语句卡住不动
- const,typedef与define
- 为什么要使用子程序?
- 正则表达式语法大全
- 數據-欄位中的換行符問題:delprioritychar,del,IXF相關
- Apache shiro 笔记整理之web整合一
- C++基础知识面试30题
- append()和extend()
- 手动更新Wamp中php版本的方法
- SCOI2007[蜥蜴]