Почему эта переменная изменится после оператора возврата?

У меня есть функция с подписью:

int exe(int stack[][STACKSIZE], int sp[], int reg[][REGISTERSIZE], int next_instruct[],
        int next_inst[], int cur_proc, int *terminate);

Она имеет две последние строки:

printf("TWO cur_proc: %d\n",cur_proc);
return NORMAL;

И называется так:

printf("ONE cur_proc: %d\n",cur_proc);
msg = exe(stack,sp,reg, next_instruct, next_instruct, cur_proc, &terminate);
printf("THREE cur_proc: %d\n",cur_proc);

И я передаю переменную cur_proc , которая считается «доступной только для чтения» (это не имеет значения, передаваемая по значению) внутри exe () . Мои дела делаются внутри exe () .

И мой вывод:

ONE cur_proc: 1
TWO cur_proc: 1
THREE cur_proc: -1

Это меня очень сбивает с толку, так как я не вижу причин, по которым это могло быть перезаписано отрицательным.

Какова возможная причина такого странного поведения?

5
задан Jonathan Leffler 29 March 2014 в 12:02
поделиться