注册 登录
编程论坛 C++教室

字符串常量 问题

duffebear 发布于 2007-11-02 13:09, 567 次点击

上C++选修课,老师指出了一个我以前没怎么注意的问题,形如
"char * pStr="Abcd";"的语句中的pStr指向的是字符串常量,所以程序中对pStr指向的区域只能读,
不能写(如 pStr[1]='c' ;这样的操作),否则即算编译成功,也会运行失败,而且程序测试也似乎如此。

而我在《 effective c++》上

条款21: 尽可能使用const
里面有下面一句
...
char *p = "hello"; // 非const指针, 非const数据

这里是不是有问题

3 回复
#2
yuyunliuhen2007-11-02 13:51

实践证明一切吧.如果测试都是这样的话。去这里看是否有修正:
Scott Meyers---Modification History and Errata List for Effective C++
http://www.aristeia.com/BookErrata/ec++2e-errata_frames.html

#3
duffebear2007-11-02 15:44

上面看的是第一版(因为是中文,方便些)
刚刚看了下 effective C++ 第三版(英文版),看来第一版的条款21: 尽可能使用const 那里的确有错误

第三版
Item 3: Use const whenever possible

在这里与一版不同,修改为了:

char greeting[] = "Hello";

char *p = greeting; // non-const pointer,

// non-const data

const char *p = greeting; // non-const pointer,

// const data

char * const p = greeting; // const pointer,

// non-const data

const char * const p = greeting; // const pointer,

// const data



看书还得看最新版 ,尽管是 英文

#4
yuyunliuhen2007-11-02 16:23

书还是看原版好!

1