我被要求写这些代码的作用:
int main()
{
int var1,var2, *ptr;
ptr=&var1;
var2=12;
*ptr=var2;
var1=var1/ *ptr;
printf("%d %d", var1,var2);
}
现在我的问题是这意味着什么。首先ptr存储var 1的地址。然后var 2被定义为12。下一步idk它意味着什么,最后一个也是如此。我最终打印了1和12。不知道为什么。
我所理解的是12也存储在ptr中。所以ptr有var 1地址,var 1也得到值12。所以最后一步是var 1 =12/12。这就是为什么我在printf中得到1和12。这只是我所理解的,但我真的不明白,我不确定它是否正确。顺便说一句,ty代表undesrtanding。
2条答案
按热度按时间sigwle7e1#
ptr=&var1;
&var1
是对象var1
的地址。ptr = &var1
将地址存储在对象ptr
中。var2 = 12;
这会将12储存在对象
var2
中。*ptr = var2;
它将
var2
的值存储在对象*ptr
中。由于12存储在var2
中,因此它将12存储在对象*ptr
中。由于ptr
的值是var1
的地址,因此*ptr
是var1
。因此*ptr = var2
将12存储在对象var1
中。var1 = var1 / *ptr;
*ptr
是ptr
指向的对象,即var1
。因此,var1 / *ptr
将分子var1
的值除以分母*ptr
的值,即var1
。分子和分母的值都是12,因此var1 / *ptr
为1。然后var1 = var1 / *ptr
将1存储在对象var1
中。printf("%d %d", var1,var2);
这将打印
var1
和var2
的值,并转换为十进制。根据上述内容,var1
包含1,var2
包含12,因此打印“1 12”。cu6pst1q2#
指针
ptr
由变量var1
的地址初始化。所以使用表达式
*ptr
和使用表达式var1
是一样的,因为取消引用指针会得到变量var1
。因此这些表达式语句
可以被等效地重写为
var2
最初被赋值为整数常量12
并且变量
var1
的结果值将等于1
,而与它在赋值表达式var1 / var1
的结果之前具有哪个值无关(当然,假设.var1
不等于0)