【发布时间】:2014-02-17 15:11:59
【问题描述】:
我的问题是关于指针声明的 c 语法的一个简单问题(我希望如此)。我对如何声明一个指针,它是如何使用的以及效果是什么,我很清楚,如下所示。
int *val_ptr;
int val =99;
val_ptr = &val;
然而,令我困惑的是为什么当我们在 C 中声明一个指针时,我们使用 * 间接(值)运算符?而不是运算符的 & 地址。如果我们声明一个指针,用 & 这样做是不是没有意义,因为我们声明了一个地址,对吗?示例:
int & val_ptr;
int val =99;
val_ptr = &val;
我知道这是不正确的,但在我看来这似乎更直观。我对 * 运算符的概念中缺少什么。我还没有找到一本可以解释原因的教科书,它们只是说明了如何。我知道怎么做,我想知道为什么。
感谢阅读。
【问题讨论】:
-
“为什么?”有一个正确答案:因为标准是这样说的。
-
这不是programmers.stackexchange.com/的问题吗?
-
这个问题似乎是题外话,因为它属于programmers.stackexchange.com
-
@AndrewS 您似乎在要求我们深入了解 Ritchie 等人的想法。除了“创作者认为如此”之外,我们无法为您提供明确的答案
-
@AndrewS:IMO 无法按照 StackOverflow 的标准回答这个问题,但这本身并不是一个坏问题——只是不适合这个网站(programmers.stackexchange 会更好)。你不应该投反对票,但这是互联网。人们会做任何事。
标签: c pointers value-of indirection