const char * s和char * const s的区别

DuBin11 2008-10-31 03:50:13
记得有一个是地址可变,值不变,另外一个正好相反,记不清哪个是哪个了
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
czbever 2008-10-31
  • 打赏
  • 举报
回复
常量指针和指针常量的问题
chenzhp 2008-10-31
  • 打赏
  • 举报
回复
const在左边还是在右边

口诀: 左内(内容)右本(本身)
lbh2001 2008-10-31
  • 打赏
  • 举报
回复
const char * s ----> s可变
char * const s ----> s不可变
killbug2004 2008-10-31
  • 打赏
  • 举报
回复 1
下面定义的一个指向字符串的常量指针:

  char * const prt1 = stringprt1;

  其中,ptr1是一个常量指针。因此,下面赋值是非法的。

  ptr1 = stringprt2;

  而下面的赋值是合法的:

  *ptr1 = "m";

  因为指针ptr1所指向的变量是可以更新的,不可更新的是常量指针ptr1所指的方向(别的字符串)。

  下面定义了一个指向字符串常量的指针:

  const * ptr2 = stringprt1;

  其中,ptr2是一个指向字符串常量的指针。ptr2所指向的字符串不能更新的,而ptr2是可以更新的。因此,

  *ptr2 = "x";

  是非法的,而:

  ptr2 = stringptr2;

  是合法的。

  所以,在使用const修饰指针时,应该注意const的位置。定义一个指向字符串的指针常量和定义一个指向字符串常量的指针时,const修饰符的位置不同,前者const放在*和指针名之间,后者const放在类型说明符前。
wyswyg63 2008-10-31
  • 打赏
  • 举报
回复

const char *s 中const 修饰的是char, char不可变
char const *s 与上一样

char * const s 修饰的是s,地址不可变

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧