指针就算指向了常量也不能修改这个常量
2015-10-25 01:09
155 查看
先来看我这个低级的错误代码
当运行时直接出来main.exe停止工作,仔细检查时发现char指针指向了常量,我这相当于在修改常量,但是常量是不能修改的。我分析了一下,我可能想的字符串常量是以数据形式存储的,然后直接用char指针指向了其首元素。
另外数据组名也是常量,不能对修改数据组名的值(地址)
#include <stdio.h> int main(int argc, char *argv[]) { char *ch1,*ch2; int i=0; ch1="you are my father"; ch2="i am your sun"; do { ch1[i]=ch2[i]; i++; }while(ch2[i]!='\0'); ch1[i]='\0'; printf("string=%s",ch1); return 0; }
当运行时直接出来main.exe停止工作,仔细检查时发现char指针指向了常量,我这相当于在修改常量,但是常量是不能修改的。我分析了一下,我可能想的字符串常量是以数据形式存储的,然后直接用char指针指向了其首元素。
另外数据组名也是常量,不能对修改数据组名的值(地址)
char str[]={"i love china"} str=str+1; printf("str=%s",str);这是错误的。
相关文章推荐
- Perl中的函数的定义和使用
- cf 8a Train and Peter
- 浏览器插件之ActiveX开发
- uvaoj 10253 - Series-Parallel Networks
- javascript基本语法2 引用类型------数组
- 使用Python工具抓取网页
- Android应用中OOM问题剖析和解决方案
- Corona学习之composer<1>
- 关于apicloud图片缓存
- 嵌入式的根文件系统
- Perl中use strict
- [置顶] LXT6架构-嵌入式Web服务器Nginx交叉编译与配置使用(ARMv7)
- 安卓canvas实现拖动显示大背景图片
- SQL不同数据库下的查询前n条记录
- C语言第二章:运算符
- 直接插入排序(OC实现)
- Positional parameter does not exist: 1 in query: from Books where isbn=?
- Jmeter之JDBC Request使用方法(oracle)
- 为监听器设置密码
- mysql 第23章 监控