Я хотел бы помочь понять этот код:Указывая локальную переменную
void F (int a, int *b)
{
a = 7 ;
*b = a ;
*b = 4 ;
printf("%d, %d\n", a, *b);
b = &a ;
}
int main()
{
int m = 3, n = 5;
F(m, &n) ;
printf("%d, %d\n", m, n) ;
return 0;
}
Я смущен, почему это не приводит к неожиданному поведению. В конце функции F значение b равно 7. Но когда я возвращаюсь, становится ясно, что после «b = & a» влияет значение n/b. Я думал, что указание на локальную переменную приведет к мусору/неожиданному поведению при изменении области действия, но это, похоже, не так.
* Я смущен, почему это не приводит к неожиданному поведению * - так что вы ожидаете * неожиданного поведения? Гектометр Здесь я вижу противоречие ... –
в конце функции 'F',' b' равно адресу 'a', а' a' является локальным для функции 'F'. – yano
Итак, какое поведение ** ** вы ожидали неожиданности? Ну, это приводит к _un ** определенному ** behaviour_. Разве этого недостаточно? Как насчет чтения man-страниц функций, которые вы используете? '% d' принимает аргумент' int', а не указатель! – Olaf