C语言中const和char的那些事儿
(2010-11-22 16:37:05)
标签:
charconst常量指针字符数组it |
分类: 编程经验--积跬步至千里 |
const char *p VS char const *p VS char *const p
const char *p;//指针p指向的是const char,这里的p也就是C++里的string。不可通过p,修改它指向的内容。
//但是请看下面的例子
const char *p="123"; //0x009c674c "123"
p="2456"; //0x009c6888 "2456"
//我怀疑这里使用了类似C++里的复制构造函数。因为跟踪发现,在p的溢出位置上,会填充多个‘\0’,总长度总是8个byte的倍数,随着p的长度变化。
char const *p;//同上
char *const p;//p是一个常量指针,即它指向的内存地址不可改变。内存地址里存的数据结构是char。
const char *p VS char p[]
//两者都是字符数组,但前者长度不固定,后者长度固定;
//前者不可修改单独其中的某些字符,而后者可以任意修改。
const char *p;//指针p指向的是const char,这里的p也就是C++里的string。不可通过p,修改它指向的内容。
//但是请看下面的例子
const char *p="123"; //0x009c674c "123"
p="2456"; //0x009c6888 "2456"
//我怀疑这里使用了类似C++里的复制构造函数。因为跟踪发现,在p的溢出位置上,会填充多个‘\0’,总长度总是8个byte的倍数,随着p的长度变化。
char const *p;//同上
char *const p;//p是一个常量指针,即它指向的内存地址不可改变。内存地址里存的数据结构是char。
const char *p VS char p[]
//两者都是字符数组,但前者长度不固定,后者长度固定;
//前者不可修改单独其中的某些字符,而后者可以任意修改。
后一篇:培养良好的编程习惯

加载中…