社区
C语言
帖子详情
const char * s和char * const s的区别
DuBin11
2008-10-31 03:50:13
记得有一个是地址可变,值不变,另外一个正好相反,记不清哪个是哪个了
...全文
115
5
打赏
收藏
const char * s和char * const s的区别
记得有一个是地址可变,值不变,另外一个正好相反,记不清哪个是哪个了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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,地址不可变
const
char
* 、
char
const
*、
char
*
const
三者的
区别
以及
const
char
*
const
* p的感悟
一、
const
char
* 、
char
const
*、
char
*
const
三者的
区别
: (1)
const
char
* 和
char
const
* 等价,都是常量指针,也就是不可通过指针改变所指对象的值,但是对象可以不是常量,也就是说对象本身可以改变自身的值。 例1://不可通过指针改变所指对象的值
char
a[2] = { 'a', 'b'};
const
char
*p...
char
* 和
const
char
*的
区别
一、含义的不同
char
* 表示一个指针变量,并且这个变量是可以被改变的。
const
char
*表示一个限定不会被改变的指针变量。 二、模式的不同
char
*是常量指针,地址不可以改变,但是指针的值可变。
const
char
*是指向常量的常量指针,地址与值均不可变。 三、指针指向的内容的不同
char
*指针指向的内容是可以改变的,是不固定的。赋值后在数据传递的过程中允许改变。
const
char
*指针指向的内容是固定的,不可改变的。对传入的参数,不会对指针指向的内容进行修改 四、意义
const
char
*、
char
const
*、
char
*
const
三者的
区别
一、
const
char
* 对于
const
char
* s来说,
const
char
* 是指向常量的指针,而不是指针本身为常量,可以不被初始化.该指针可以指向常量也可以指向变量,只是从该指针的角度而言,它所指向的是常量。* s是不变的,s是可以改变的,
const
限定的* s。s被一个解引用运算符修饰,故s是个普通的指针,可以修改,但是s所指向的数据(即*s)由于
const
的修饰而不可通过指针s去修改。 即:指向数据的内容不可以修改。 二、
char
*
const
s是个不可修改的指针(指向不可以修改),
const
char
*和
char
*
const
的
区别
如题,今天理解了
const
char
*和
char
*
const
的
区别
。
const
关键字,意为常量,当一个变量声明为
const
之后,其值是不可以更改的。
const
char
* p;//解读为:p is a point to
const
char
(p是一个指针,指向
const
char
) 这就意味着
char
* 是不可以改变的,所以以下语句是错误的:
char
str[] = "hello world";
const
char
*ptr = str; ptr[0] = 'h'; 因为ptr指向con
const
char
*p;
char
*
const
p;
const
char
*
const
p;
const
char
*p;
char
*
const
p;
const
char
*
const
p; 前言
const
限定符,它把一个对象转换成一个常量,而常量不能修改。 一、
const
char
*p;
const
修饰*p,所以 *p在等号左边的操作都是不合法的,因为 *p不可变,此时不能用 *p来修改(eg: *p = 10; 不合法),但是p可变,p可以转向。 二、
char
*
const
p;
const
修饰p,所以 p在等号左边的操作都是不合法的,因为 p不可变,此时不能用 p来修
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章