c和指针——指针和const
来源:互联网 发布:苹果6网络知识 编辑:程序博客网 时间:2024/05/22 09:51
c和指针——指针和const
常量
const修饰符修饰一个变量,则此变量的值在初始化之后无法改变。声明的变量可以用来声明数组;
定义常量建议用#define,在预处理时进行替换。
在遇到指针时,const与指针结合形成不同的组合,对于const和指针概念不清晰,很容易犯错误。
先看下面的代码:
1: int *a;//指向整形变量的指针2: const int *c;//指向不可修改的整形变量的指针3: int * const d;//指向整形变量的不可修改的指针4: int const * const e;//指向不可修改的整形变量的不可修改的指针
在指针变量声明时,不同类型间的数据是不能相互赋值的,除非符合一定条件,编译器进行自动转换。
这个条件是
从没有const的一端做右值赋值给有const的一端。
先看下面代码:
1: char ** pointera;
2: const char ** pointerb;3: char * const * pointerc;//这个指针可以用pointera来初始化;4: char ** const pointer; //这个指针可以用pointera来初始化;
根据编译器的提示,可以作如下的理解:
自动转换只会发生在指针有const或者指针指向的内容有const.
而对于指针指向的是另一个指针的情况,由于指针指向的内容的类型不同,编译器是不会进行自动转换的。
例如:
1: double *a;
2: int *b;
3: a = b; //非法,指针类型不同
4:5: const int *c =b;//指针指向内容多了const限制,正确6: int * const d =b;//指针多了const限制,正确7: const int * const e=b;//指针和之后怎指向内容多了const限制,正确8:9: char ** pointer ;
10: const char **pointer1 = pointer;//错误,pointer1指向const char *11: //而pointer指向char*,类型不同。错误同第三行
12: char * const *pointer2 = pointer;//正确,同第五行13: char ** const pointer3 = pointer;//正确,同第六行14: char * const * const pointer4 = pointer;//正确,同第七行
0 0
- c和指针——指针和const
- 【C和指针】const指针
- C++——const关键字和指针
- C++:const和指针
- const和指针(C语言)
- C语言--const和指针
- C++:指针、引用和CONST
- [C++]const指针和指向const的指针
- C和指针读书笔记——指针
- 《c和指针》摘录4—指针
- 关于C、C++中的const和指针
- C++const成员和this指针
- C语言的const和指针
- C和指针之const、#define、volatile
- <C语言>特殊指针——const指针、void指针、NULL指针、零指针、野指针
- 指向const的指针和const指针
- const对象的指针和const指针
- const指针和指向const的指针
- 色温
- Redo Level 11 - Table Operation (DML)【对change vector的一些字段有解释】
- 日志打印,随心所欲(日志打印工具类)
- iOS8 百度地图定位及授权问题
- 结合MongoDB开发LBS应用
- c和指针——指针和const
- cocos2d-x3.2中使用的C++11特性总结
- 选择排序
- linux 例行工作 at命令和crontab命令
- cocos2d-x初探学习笔记(30)2.1新特性之CCClippingNode
- controlfile控制文件
- FrameSize、WinSize、VisibleSize、VisibleOrigin概念理解
- Exchange Server 2013 运维系列——恢复已删除或禁用的邮箱
- 关于STM32的IAP很不错的文章