char* p="ddddd";==>const char*p="ddddd";char p[]="ddddd";
来源:互联网 发布:小米note3手机卡网络 编辑:程序博客网 时间:2024/05/01 23:01
自己给自己总结一下:
const char* p: 修饰的是p指向的内容,所以不能*(p+2)='a';
区别于char* const p:修饰的是p指向的地址,地址不可变,但地址中内容仍可改变
//1
const char* p="dddddd";
*(p+2)='a';//错误,而且编译时就发现,const修饰了p指向的内容不能变.莫非就是传说中的"是静态区域的一个地址,所以不能改变这个地址中的内容"?
//2
char* p="dddddd";
*(p+2)='a';//错误同上,但编译时不能发现,但运行崩愦
//3
char pa[]="dddddd";
*(pa+2)='a';//正确,楼上边有解释.
const char* p=pa;
*(p+2)='a';//错误,而且编译时就能检查出来,原因同1
//4
有没有more effective C之类的书呢?
如liflag888()所说,const char* p="dddddd";这样声明更有助于让编译器发现错误.
//5
还有
char* func()
{
//char p[] ="dddd"; //局部
char* p="dddd"; //长期存在,返回后仍存在,因其在常量区
return p; //相当于return "ddddd";长期存在
}
- char* p="ddddd";==>const char*p="ddddd";char p[]="ddddd";
- char *p=new char
- char *p=new char
- char *p = "world";
- char* p="abc"与char p[] = "abc"区别
- char* p = new char [20] delete p 出现问题!
- char* p = "abc" error
- (char *)&p[x]=x
- char *p、const char *p
- ddddd
- ddddd
- ddddd
- DDDDD
- ddddd
- ddddd
- ddddd
- ddddd
- ddddd
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 数据仓库基础三,设计数据仓库
- Oracle 数据库的聚簇技术
- Oracle全局数据库名和SID的设置
- EclipseME安装配置及ClassNotFoundException问题
- char* p="ddddd";==>const char*p="ddddd";char p[]="ddddd";
- 怎样学习游戏编程
- 程序员应该具有的一些素质
- CXO 等词解
- Easy Header Access in ASP.NET 2.0
- Linux网络基础
- 通过改变网络拓扑使用Sniffer Pro监控、分析协议的示意图
- JDBC学习笔记+练习代码
- 1970年的图灵奖获得者-James Hardy Wilkinson