在没有指针指向的情况下,*(&i) 取消引用如何在 c 中工作?

问题描述 投票:0回答:3
#include<stdio.h>

void main()
{
    int a=10;
    printf("%d\n",a);
    printf("%d\n",*(&a));
}

由于变量“a”是整数类型,而不是指向自身的变量指针,因此取消引用在这里是如何工作的。 可能我理解有误。

c pointers dereference
3个回答
1
投票

一元

&
运算符获取其操作数的地址。因此
&a
的结果是
int *
类型的指针,随后可以通过一元
*
运算符取消引用。


1
投票

对于一元

&
*
运算符的属性:

一元

&
运算符产生其操作数的地址

一元

*
运算符表示间接。如果操作数指向函数,则结果是函数指示符; 如果它指向一个对象,则结果是指定该对象的左值。如果操作数的类型为“指向类型的指针”,则结果的类型为“type”。

就你而言

*(&a)

相同
* (pointer to object 'a') or, * (address of variable 'a')

相同
 a

所以,这个

 printf("%d\n",*(&a));

类似于

printf("%d\n",a);

0
投票

您同时进行了指针的引用和取消引用。

通过放置星号,您将取消引用指针,该指针在地址处和

()
内请求值,您正在引用变量,即您将用
&a
之后的变量地址替换
&
,因此地址为替换为
*
即可获取地址处的值。所以它有效。

© www.soinside.com 2019 - 2024. All rights reserved.