我的老师在他的讲座上有这些问题,但没有答案。有人可以帮忙吗新来的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 ?
最后,/ * p是多少?
答案 0 :(得分:0)
如果a是int变量,*& a == a?
总是正确的
它应该,但我无法找到明确的声明。
如果p是int *变量,那么p ==& * p?
总是如此
是 - 在这种情况下,&
和*
运算符都不会被实际评估。参见C 2011标准的online draft,§
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如何标记表达式。