У меня есть функция с подписью:
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
Это меня очень сбивает с толку, так как я не вижу причин, по которым это могло быть перезаписано отрицательным.
Какова возможная причина такого странного поведения?