#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
. Is 24
Адрес, в котором хранится указатель p
? потому что теперь значение a
должно быть 24 согласно упражнению, и я не могу понять, почему.
Может ли кто-нибудь сказать мне шаг за шагом, как мне с этим заниматься?
Благодарим вас за ответ, но я не могу понять, почему * p = 32-8 подразумевает a = 24. Я имею в виду, что означает * p = 24? 24 адреса? –
'p' является указателем на' a' в 'main' (' p = &a'); '* p = 24' означает' присваивать 24 переменной, на которую указывает p'. –
@Giorgio: Если 'p == & a ', тогда' * p == a', поэтому '* p = 24' совпадает с написанием' a = 24'. –