当前位置:  开发笔记 > 编程语言 > 正文

分配给const int*

如何解决《分配给constint*》经验,为你挑选了1个好方法。



1> dirkgently..:
const int * a;

从右到左阅读声明.[见注释]你得到了什么?a*指向int整数const即指数常数的指针.简而言之,变量a指向一个整数,其值不能更改.至少,不是通过a.指针对象是否真的是不可变的是一个不同的问题.但事实仍然是,你不能a用来修改*a;

const是你对自己做出的承诺:我永远不会尝试使用指向const的指针来修改指针.编译器只为您提供支持.

如果你真的想写入指针,你需要一个非const指针,如:

int *a;
*a = 42; /* this is fine */

来自bortzmeyer的一个非常好的评论:(我以为我会跳过这个以保持简单:)

你也可以把它放在const后面*(如你所说,声明应该从右到左阅读).

他的意思是:

const int *a;

没有什么不同

int const *a;

(请记住,从右到左阅读规则?)但与以下内容有很大不同:

int * const p;

读它,我们得到:pconst(-ant)*(指针)到int(-eger).翻译:一旦你设置p为指向一个整数,你就不能重置它(即写入它以使它指向另一个整数 - 使得p常量点),但你可以非常多地写入指针(指针不是不变).

注意:对于迂回倾向的人来说,Darron的"规则"是:

"声明应该从右到左阅读"是一种简化 - 如果有括号,则应从内到外阅读.除非括号表示函数调用.真正的规则是"把它视为一种表达;如果我应用这些操作符,我最终会得到这种简单的类型".

这个答案真的会少得多,但对于bortzmeyerDarron来说 - 谢谢!

PPS :(我保证这将是最后一次编辑.好吧,希望!)

void main()不是C或C++中main的标准签名.在你认识自己之前不要使用它,或者(更重要的是)你的代码将永远无法前往另一个宇宙.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有