指向const 的指针 || const 指针

acange 2001-07-11 04:53:22
加精
他们的差别是什么?
...全文
217 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
codeyangjun 2001-12-08
  • 打赏
  • 举报
回复
const int* p,p can point a,also can point b, eg:const int* p;
a=3;
p=&a;
p=&b;
a=5;//error
int* const p,p can not point another int object, eg: int * const p;
a=3;
p=&a;
b=3;
p=&b;//error
a=5;//right
soft2000 2001-11-03
  • 打赏
  • 举报
回复
写的不错
huokuaizi 2001-10-16
  • 打赏
  • 举报
回复
const指针共分三种
1,指针常量
char * const pc="asdf"
即pc是常量,不可为左值,但是*pc为变量。
2,指向常量的指针
const int * pi=&a
即*pi为常量,不为左值。
3,指向常量的指针常量
const int * const cpc=&b
即cpc与*cpc都是常量,不为左值。
yyhyan 2001-09-19
  • 打赏
  • 举报
回复
gz
ggoo 2001-08-09
  • 打赏
  • 举报
回复
看了C++编程思想是这样解释的:
“const int *x" X是一个指针,指向一个const int.即X可以指向任何东西,但它所指的东西是不能改变的。
”int const *x" x是指向恰好是const 的int 普通指针。
即前两者的意思是一样的。不过最好用第一种。
“int *const x" X是一个指针,它是指向int 的CONST指针。
“const int * const x"
"int const * const x" 指针和所指的变量都是CONST。
abcicq 2001-07-11
  • 打赏
  • 举报
回复
const 是个左结合的类型修饰符.
int const * p; // p可变, *p不可变(指向常数的指针)
int * const p; // p不可变, *p可变(常指针)

nuaalj 2001-07-11
  • 打赏
  • 举报
回复
指向常量的指针:const int *pi=&a;表示*pi是常量,不能通过指针pi来修改变量a,即*pi不能作为左值,但我们可以直接修改变量a。(pi的值是可改变的)
指针常量:int *const pi=&a;表示pi是常量,不能作为左值,但*pi的值是可改变的。
招RD和QA 2001-07-11
  • 打赏
  • 举报
回复
int i = 10;
int k = 5;

const int *p = &i;

// error, because p is a pointer to a const int
*p = 10;
// ok, because p is a pointer variable
p = &k;

int * const p2 = &i;
// ok, because p2 is a pointer to a int
*p2 = 10;
// error, because p2 is a const pointer
p2 = &k;

69,373

社区成员

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

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