有关常量字符串和静态存储区
来源:互联网 发布:linux easybcd 编辑:程序博客网 时间:2024/05/20 17:09
/**************************************/
char a[] = “hello”;
a[0] = ‘X’;
cout << a << endl;
char *p = “world”; // 注意p指向常量字符串
p[0] = ‘X’; // 编译器不能发现该错误
cout << p << endl;
/**************************************/
他解释道:示例7-3-1中,字符数组a的容量是6个字符,其内容为hello\0。a的内容可以改变,如a[0]= ‘X’。指针p指向常量字符串“world”(位于静态存储区,内容为world\0),常量字符串的内容是不可以被修改的。从语法上看,编译器并不觉得语句p[0]= ‘X’有什么不妥,但是该语句企图修改常量字符串的内容而导致运行错误。
之后在示例7-4-5中他指出同样的问题:
/**************************************/
char *GetString2(void)
{
char *p = "hello world ";
return p;
}
void Test5(void)
{
char *str = NULL;
str = GetString2();
cout < < str < < endl;
}
/**************************************/
函数Test5运行虽然不会出错但是函数GetString2的设计概念却是错误的因为GetString2内的hello world是常量字符串位于静态存储区它在程序生命期内恒定不变无论什么时候调用GetString2它返回的始终是同一个只读的内存块。
- 有关常量字符串和静态存储区
- 常量字符串和静态存储区
- 常量字符串和静态存储区
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 字符串常量放在静态存储区
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 字符串常量放在静态存储区
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- 常量字符串为什么位于静态存储区?
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- 一个简单的排序程序
- printk如何定向输出到UART的?
- MySQL配置文件my.cnf详解
- NoSQL学习笔记(二)之CAP理论
- 有关常量字符串和静态存储区
- 对话框控件的提示功能
- 运行及卸载第一个应用
- Menu菜单(二)————利用GridView实现自定义的OptionMenu
- VC-监视程序的编制
- 招投标过程---投标之述标 大杂烩
- 抽象类
- MFC中从一个类向其他类发送消息的方法
- poj1637 Dinic