-8

我的老师在他的演讲幻灯片上有这些问题,但没有答案。有人可以帮忙吗。新来的c。

If a is an int variable, is it always true that *&a == a ?
If p is an int* variable, is it always true that p == &*p ?
Is it ever meaningful to say **p ?
Is it ever meaningful to say &&a ?
After assigning a = 2 and p = &a, how much is *p**p ?
If furthermore q = &p, how much is **q**p***q ?

最后, a/*p 多少钱?

4

1 回答 1

0

如果 a 是一个 int 变量,那么 *&a == a 是否总是正确的?

应该是,但我找不到一个明确的说法。

如果 p 是一个 int* 变量,那么 p == &*p 是否总是正确的?

是的 - 在这种情况下,不会实际评估&nor运算符。*请参阅 C 2011 标准的在线草案,§ 6.5.3.2 ¶ 3。

说 **p 有意义吗?

是的。多重间接出现在各处。您可以拥有指向指针的指针、指向指针的指针、指向指针数组的指针、指向函数的指针、返回指向指向指针的指针数组的指针等。

说 &&a 有意义吗?

不,结果&a不是左值,因此您不能将&运算符应用于它。换句话说,地址的地址是什么?

分配 a = 2 和 p = &a 后,*p**p 是多少?

应该与 相同a * a,尽管请注意 C 的标记化算法是“贪婪的”,因此您真的想用空格分隔术语和运算符。

如果还有 q = &p,那么 **q**p***q 是多少?

同样,它应该与 相同a * a * a,并且再次注意 C 如何标记表达式。

于 2017-03-27T03:23:48.827 回答