加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么你必须在C中读取指针声明后缀?

发布时间:2020-12-16 10:14:12 所属栏目:百科 来源:网络整理
导读:在C语言中,对于简单的情况,似乎为了读取指针声明,你必须向后进行.例如: int n; int *p = n; // p is a pointer to intint *const np = n; // np is a const pointer to intint *const *npp = np; //npp is a (non-const) pointer to const pointer to (non-
在C语言中,对于简单的情况,似乎为了读取指针声明,你必须向后进行.例如:

int n; 
int *p = &n; // p is a pointer to int
int *const np = &n; // np is a const pointer to int
int *const *npp = &np; //npp is a (non-const) pointer to const pointer to (non-const) int

即使解析类型声明的正确方法是通过所谓的the spiral rule,如果解析规则不同以便以另一种方式容纳简单指针声明的读取,这不是更容易吗?
例如:

int n;
*int p = &n; // p is a pointer to int
const *int np = &n; // np is a const pointer to int
*const *int npp = &np; // npp is a (non-const) pointer to const pointer to (non-const) int

那么我的问题是:这种设计选择背后的原理是什么?是什么促使语言设计者选择这种特殊方式来声明类型.

解决方法

除了语法.如果我没有弄错背后的想法:

int **a;

如下.您需要取消引用两次才能获得int.这样const位置也开始有意义.

int * const * a;

这个本质上意味着您需要取消引用一次以获取指向int的const指针.

您可能会发现有关C起源的有趣和有教育意义. (PDP,B等)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读