Здесь , в Упражнении № 1 есть функция HardToFollow
:
void HardToFollow(int *p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
Unknown(num, *p);
}
Вторая последняя строка указывает p
на q
, который является локальным переменная (копия аргумента). Указатель на локальную переменную.
Позже в основной функции указатель передается, поскольку этот первый аргумент используется после вызова. Разве это не должно быть неопределенным поведением? Не должен ли указатель, переданный в качестве первого аргумента, быть неопределенным после вызова HardToFollow()
?
Редактировать: Я понял, что это не неопределенное поведение, сам указатель можно изменить, не отражая поведение переданного аргумента, только изменения указанного значения будут постоянными.