Sivan's blog
用代码说话……
posts - 14, comments - 2, trackbacks - 0, articles - 0
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
指针与字符常量
Posted on 2010-09-24 16:15
Sivan
阅读(336)
评论(0)
编辑
收藏
引用
所属分类:
C/C++
先看一个代码
1
#include
"
stdafx.h
"
2
#include
<
iostream
>
3
using
namespace
std;
4
5
int
main()
6
{
7
char
*
pch
=
"
aaa
"
;
8
pch[
2
]
=
'
b
'
;
9
cout
<<
pch
<<
endl;
10
return
0
;
11
}
运行这几行代码,程序会崩溃。将指针pch指向“aaa”,而“aaa”是个字符串常量,后对pch[2]进行修改,赋值操作不合法,程序崩溃。
c++中内存分为5个区域:堆、栈、自由存储区、全局/静态存储区和常量存储区。
堆、栈不说啦,自由存储区与堆类似,不过使用malloc分配free释放,全局/静态存储区存储全局变量和static变量,常量存储区存放的是常量,不允许修改,“aaa”就存储在这个位置。
将代码改为如下情况:
char
str[]
=
"
aaa
"
;
char
*
pch
=
str;
pch[
2
]
=
'
b
'
;
cout
<<
pch
<<
endl;
此时“aaa”为栈分配,是数组中的存储内容,所以可以修改。
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
[学]const及表驱动
简陋的C++画图程序
指针与字符常量
[转]static的三个作用
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © Sivan
日历
<
2010年9月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Boost(1)
C/C++(4)
Essay(1)
Everyday(1)
Python(4)
VC/MFC(3)
随笔档案
2014年10月 (2)
2011年11月 (1)
2011年4月 (1)
2011年3月 (1)
2010年12月 (6)
2010年10月 (1)
2010年9月 (2)
3D资源
csinx-一个有用的小站
DirectX Tutorial
Ogre3D开放资源
OpenGPU
龚敏敏-KlayGE游戏引擎
搜索
最新评论
1. re: 简陋的C++画图程序[未登录]
写的不错
--q
2. re: 简陋的C++画图程序
不错
初学者谢过了
--xq
阅读排行榜
1. [学]ListBox自绘(3135)
2. 简陋的C++画图程序(2417)
3. [原]自动注册程序目录下的DLL和OCX(2143)
4. scoped_ptr(1343)
5. ATL工程中使用MFC库的两点问题(815)
评论排行榜
1. 简陋的C++画图程序(2)
2. [学]const及表驱动(0)
3. [原]自动注册程序目录下的DLL和OCX(0)
4. [学]Python用户手册笔记_1_More Control Flow Tools(0)
5. [学]Python用户手册笔记_2_Data Structures(0)