易犯的错误:C指针指向内存空间的常量区
来源:互联网 发布:曲靖医专教务网络 编辑:程序博客网 时间:2024/06/17 22:52
根据下面语句写出结果:
char* s = “AAA”;printf(“%s”, s);s[0] = 'B';printf(“%s”, s);
看到上面的短程序,或许我们会觉得显而易见,这里指针s指向了AAA,存放的是AAA的地址,所以第一个打印的结果为AAA,s[0]代表的是指向字符串AAA的首地址,所以会觉得第二个打印的结果就是BAA,即将第一个字符更改为了B。
然而在将上面的程序进行验证时,编译执行后发现只有第一个打印正确,接着是出现“段错误”!
这是因为指针虽然指向了AAA,但是AAA为字符串,存放在内存空间中的常量区(数据段的rodata段)。解释到这里我们就可以很容易的明白段错误的原因。对于常量的值是不可修改的,这也是非常容易因为不去考虑其存储空间而犯的错误。在此引以为戒,避免再次犯这样的错误!
0 0
- 易犯的错误:C指针指向内存空间的常量区
- C语言:指向常量的指针 和 指针常量
- C指向常量的指针和指针常量
- C/C++ 指向常量的指针和常量指针
- 指向常量的指针
- 指向常量的指针
- 指向常量的指针
- 指向常量的指针常量
- 【C/C++】常量指针、指针常量以及指向常量的指针常量
- 【C/C++】常量指针、指针常量以及指向常量的指针常量
- 常量指针、指针常量、指向常量的常量指针
- 指针常量,常量指针。指向常量的常量指针
- 指针常量,常量指针, 指向常量的常量指针
- 指针常量,常量指针。指向常量的常量指针 收藏
- 常量指针、指针常量以及指向常量的指针常量
- 常量指针,指针常量,指向常量的指针常量
- 指针常量、常量指针、指向常量的指针常量
- 常量指针、指针常量、指向常量的指针常量
- FireStart教程:基于SharePoint的出差报销流程四
- Django中的数据库操作
- lame 3.99和 AFNetworking升级遇到的几个问题的处理
- osg汉字显示
- Java汉诺塔问题
- 易犯的错误:C指针指向内存空间的常量区
- Unity UI上实现物体的三维展示
- flash编程时javascript里的flashvars里各参数的意思
- Java笔记系列(基于马士兵的课堂)(3)-数组
- Python:Ubuntu安装numpy,scipy,matplotlib
- 安装和使用Elasticsearch
- 敏捷其实很简单(9)Scrum Master的七种武器之离别钩霸王枪箱子
- 记录我的接触程序的点点滴滴
- 工作第一个项目遇到的问题及解决