void double_trouble(int *p, int y);
void trouble(int *x, int *y);
int
main(void)
{
int x, y;
trouble(&x, &y);
printf("x = %d, y = %d\n", x, y);
return (0);
}
void
double_trouble(int *p, int y)
{
int x;
x = 10;
*p = 2 * x - y;
}
void
trouble(int *x, int *y)
{
double_trouble(x, 7);
double_trouble(y, *x);
}
Для приведенного выше кода, я знаю выход x
и y
должны быть 13 и 7. Однако я немного запутался, что, поскольку это в пустоту, почему бы значение все еще сохраняется в x
и y
? Другими словами, так какуказатель и указатель осветление
double_trouble(x, 7);
называется, почему значение x
еще 13? Я имею в виду, что это пустое, сохраненное значение будет удалено, не так ли?
Если мой вопрос не очень понятно, пожалуйста, объясните немного вызова функции в
void trouble(int *, int *)
[Каковы препятствия для понимания указателей и что можно сделать для их преодоления?] (Http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and- что может быть сделано для преодоления) –
Значение x в функции проблемы не равно 13. Значение x - это некоторый адрес памяти, который содержит целое число со значением 13. Это целое число также называется именем x в основном. Это плохая идея. Его следует называть xp или что-то в этом неприятности. –