about 'const' & 'pointer'

CountFloyd 2003-10-15 08:45:21
一个很菜的问题。

int d = 1;
const int e = 2;

int* u = &d; //ok--d not const
int* v = &e; //illegal--e const

int* w=(int* )&e; //legal but bad practice


问最后一行的这个类型转换,为什么不是(int)&e ???
我是参照int* v 才搞不懂的。

...全文
46 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TianGuangZao 2003-10-15
  • 打赏
  • 举报
回复
int d = 1;
const int e = 2;

int* u = &d; //ok--d not const
表示 u 为指针指向整数类型。

int* v = &e; //illegal--e const
改成 const int *v = &e;
表示 v 为指针指向常量整数类型。

int* w=(int* )&e; //legal but bad practice

(int *)&e 取 e 的地址,然后 cast 成整数指针类型。
(int)&e 取 e 的地址,然后 cast 成整数类型。

int * and int are different, understand?!
CountFloyd 2003-10-15
  • 打赏
  • 举报
回复
还是没有全懂。
类型转换的目的是使const int e 成为非const类型吧。进行(int)&e 的类型转换就不行吗?
为什么呀?
alongfly 2003-10-15
  • 打赏
  • 举报
回复
没有必要类型转换。
akiko 2003-10-15
  • 打赏
  • 举报
回复
w的类型是int*,不是正合适嘛
ttlb 2003-10-15
  • 打赏
  • 举报
回复
因为w的类型是int*,所以要将&e转换成int*,最好写成int* w=(int* )(&e);

69,369

社区成员

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

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