#include<stdio.h>
void main()
{
int a=10;
printf("%d\n",a);
printf("%d\n",*(&a));
}
由于变量“a”是整数类型,而不是指向自身的变量指针,因此取消引用在这里是如何工作的。 可能我理解有误。
一元
&
运算符获取其操作数的地址。因此 &a
的结果是 int *
类型的指针,随后可以通过一元 *
运算符取消引用。
对于一元
&
和 *
运算符的属性:
一元
运算符产生其操作数的地址&
和
一元
运算符表示间接。如果操作数指向函数,则结果是函数指示符; 如果它指向一个对象,则结果是指定该对象的左值。如果操作数的类型为“指向类型的指针”,则结果的类型为“type”。*
就你而言
*(&a)
与
相同* (pointer to object 'a') or, * (address of variable 'a')
与
相同 a
所以,这个
printf("%d\n",*(&a));
类似于
printf("%d\n",a);
您同时进行了指针的引用和取消引用。
通过放置星号,您将取消引用指针,该指针在地址处和
()
内请求值,您正在引用变量,即您将用 &a
之后的变量地址替换 &
,因此地址为替换为 *
即可获取地址处的值。所以它有效。