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