以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  [讨论]const的一种易混淆的写法(这种写法很多见)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=29328)


--  作者:yumi301
--  发布时间:3/26/2006 10:38:00 PM

--  [讨论]const的一种易混淆的写法(这种写法很多见)
const的两种常见书写风格:
 const double d = 1.1; //写法(1)
 double const d2 = 2.2; //写法(2)
这两种写法语法上都对,且意思一样。都定义了一个double常量。
你更赞同哪种写法?

写法(1)更常见,我却认为写法(2)更合理。下面例子中写法(1)会导致严重的误解:
 typedef char *cstr;
 const cstr cs = "abc";
这个变量cs的类型是const char *呢还是char *const?
答案是后者:
 cs = "ef"; //error, cs 是一个常量指针
 *cs = 'A'; //ok. cs变为"Abc"
如果cs的定义按下面写法就不会产生误解了:
 cstr const cs = "abc";
依此类推,定义一个常量指针csp,它指向一个const字串:
 char const * const csp = "123";
 //而不是:const char * const csp = "123";

写法(1)太常见了,书上介绍const都是这么写地,却如此地让人混淆。
使用写法(2)大家认为有道理没。


--  作者:bood
--  发布时间:3/30/2006 4:47:00 PM

--  
还是习惯1,理解了就好了
关键在于const修饰的是谁

const cstr cs
const修饰cstr,cstr修饰cs,于是其实const就是修饰的cs,说明cs就是常量

const char * cs
const修饰的是char,说明指向的是常量


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms