[英]Pointers and double pointers exercise
#include <stdio.h>
int a;
int main ()
{
int a, b;
int *p;
b = 8;
p = &b;
a = 32 + b;
p = &a;
*p = 32 - b;
funct (a, &p);
*p = 2;
printf ("a=%d b=%d", a, b);
}
funct (int x, int **y)
{
a = 15;
**y = x - a;
*y = &a;
}
有人可以告诉我为什么a等于9吗? 我试图解决它,但我不太了解
我试图在代码code::blocks
,显然a
后从40变为24
`*p=32-b`
同样, p=&b
表示指针指向b的地址,然后在a=32+8
p=&a
和双指针*p= 32-b
*p=24
。 24
是指针p
存储的地址吗? 因为现在的价值a
要根据演习是24,我不明白为什么。
有人可以一步一步告诉我如何进行这种锻炼吗?
由时间func
被调用时, a
= 24, p
是的地址a
。
但是,在function
内部, a
表示全局 a
,而不是main
声明的a。 func
第一赋给 a
是15。然后:
**y
是a
在main
x - a
是main
的a
(24)减去全局a
(15),得到9 **y = x - a
组main
的a
至9 通话之前
funct (a, &p);
由于该语句,变量a
等于24
*p = 32 - b;
其中b
等于8。
在此语句的函数内部
a = 15;
**y = x - a;
a
被设置为24 - 15
等于8
,因为解除引用指针*y
指向原始变量a
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.