【编程经验】一个关于常量不能被修改的错误
2015-06-19 00:15
155 查看
运行报错:
Unhandled exception at 0x001813d1 in test1.exe: 0xC0000005: Access violation writing location 0x00185832.
先直接上代码
声明的respone是一个常量,常量无法被修改。若尝试修改之,则会崩溃报错。
这样明显的错误我们不会犯,但是以下情况我们往往会犯错。
以上情况我们很容易忽视,这样就造成了编译通过,但是运行就会崩溃的情况。
稍微该以下就可以避免这种情况
Unhandled exception at 0x001813d1 in test1.exe: 0xC0000005: Access violation writing location 0x00185832.
先直接上代码
#include <stdio.h> #include <iostream> using namespace std; void main() { char* respone = "2991541"; respone[5] = '\0'; //运行时会出错 }
声明的respone是一个常量,常量无法被修改。若尝试修改之,则会崩溃报错。
这样明显的错误我们不会犯,但是以下情况我们往往会犯错。
#include <stdio.h> #include <iostream> using namespace std; void func1(char* ch) { ch[2] = '\0'; </span>//执行到这里的时候会报错。 } void main() { char* respone = "2991541"; func1(respone); //将常量参数传入到func1中去了, //但是在func1中的参数并不是const char* 类型的 return; }
以上情况我们很容易忽视,这样就造成了编译通过,但是运行就会崩溃的情况。
稍微该以下就可以避免这种情况
void func1(char* ch) { ch[2] = '\0'; //执行到这里的时候会报错。 }修改为
void func1(const char* ch) { ch[2] = '\0'; //编译的时候就会在这里报错! }
相关文章推荐
- java正则表达式速记
- Java-马士兵设计模式学习笔记-工厂模式-用Jdom模拟Spring
- Yii2 数据库操作汇总
- scrapy爬豆瓣电影
- Ubuntu下 vi编写第一个C语言程序
- 详解Python中的日志模块logging
- Python写的一个简单监控系统
- php结合正则获取字符串中数字
- php实现通过ftp上传文件
- php打造智能化的柱状图程序,用于报表等
- 常用的php图片处理类(水印、等比缩放、固定高宽)分享
- PHP实现获取中英文首字母
- PHP 常用的header头部定义汇总
- PHP实现中文圆形印章特效
- PHP自动生成表单代码分享
- php判断访问IP的方法
- php计算整个mysql数据库大小的方法
- php分割合并两个字符串的函数实例
- php根据一个给定范围和步进生成数组的方法
- php实现随机生成易于记忆的密码