Автоматическая переменная, указатель за функцией все еще получает ее - PullRequest
0 голосов
/ 25 ноября 2018

компиляция под Windows с помощью gcc, из этого кода:

#include <stdio.h>

int f(int ** iptr)
{
  printf("f initial value: %i\n",**iptr);
  int a =10;
  *iptr = &a;
  printf("f changed value: %i\n",**iptr);

  return 0;
}

int main()
{
  int * p = 0;
  int i =7;
  p = &i;

  printf("main initial value: %i\n",*p);

  f(&p);

  printf("main after f value under p: %i\n",*p);
  printf("again value under p: %i\n",*p);
  printf("value of i: %i\n",i);

  return 0;
}

Я получаю такой результат:

main initial value: 7
f initial value: 7
f changed value: 10
main after f value under p: 10
again value under p: 1963422240
value of i: 7

Есть идеи, почему это происходит?

Спасибо!

PS А форматирование этого сайта жалуется на то, что я не написал достаточно разговоров здесь ... Итак, будучи социальным ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...