黑马程序员技术交流社区

标题: const char *p、char const *p、char * const p的区别 [打印本页]

作者: Meniny    时间: 2014-8-21 07:13
标题: const char *p、char const *p、char * const p的区别
  1. const char *p
  2. char const *p
  3. char * const p
复制代码

这三个有什么区别呢?
前两个可以互换,它们声明了一个指向字符常量的指针,这意味着不能改变它所指向的字符的值。
char * const p声明了一个指向(可变)字符的指针常量,也就说你不能修改指针。
作者: cjfire    时间: 2014-8-21 09:28
好贴,但是最后一句有点迷糊。修改指针意味着什么?
作者: qq541955920    时间: 2014-8-21 14:33
神贴。。点赞!
作者: xiniuniu    时间: 2014-8-21 14:44
本帖最后由 xiniuniu 于 2014-8-21 15:01 编辑

区分这几个指针的一个小技巧
const char *p
char const *p
char * const p
const char* const p

从*号开始 分开 左右两部分,*号在左侧一边

const char*     p             从右向左读     p 指向 const char*   // 指向常量的指针 指针可以修改,所指对象不能修改
char const*     p             从右向左读     p 指向  char const*  //指向常量的指针 指针可以修改,所指对象不能修改
char*        const p        从右向左读       const p 指向  char*    //常量指针 指针不能修改,所指对象可以进行修改
const char*    const p    从右向左读    const p 指向  const char* //指向常量的常量指针  指针和所指对象都不能进行修改



作者: xiniuniu    时间: 2014-8-21 15:03
cjfire 发表于 2014-8-21 09:28
好贴,但是最后一句有点迷糊。修改指针意味着什么?

char * const p = "i love c";

p = "c++"; //不可以。p为常量指针,一但给定了一个值之后在编译阶段就不允许再修改了
作者: Meniny    时间: 2014-8-24 10:06
xiniuniu 发表于 2014-8-21 15:03
char * const p = "i love c";

p = "c++"; //不可以。p为常量指针,一但给定了一个值之后在编译阶段就不 ...

请认真看帖仔细分析
作者: xiniuniu    时间: 2014-8-24 22:03
Meniny 发表于 2014-8-24 10:06
请认真看帖仔细分析

;P 哈哈哈!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2