мне нужно найти значения I и J после выполняется следующий код:C: Trouble понимание указателей в этой программе
int i = 2;
int j = 2;
int *p = &i;
int *q = &j;
i++;
j--;
*p = *q + 2;
*q = *p + 3;
p=q;
*p = *q + 1;
Позвольте мне описать то, что я думаю, что происходит в этом коде. В третьей и четвертой строке:
int *p = &i;
int *q = &j;
указатели р и д инициализируются адресами I и J, соответственно. в 5-м и 6-м направлениям:
i++;
j--;
я становится 3 и J становится 1. Это приводит к * р равным 3, и * д, чтобы быть 1.
В 7-й линии,
*p = *q + 2
означает значение, которое указывает на р равно значению, что д указывает на plus` 2, поэтому я становится 3.
в следующей строке:
*q = *p + 3;
J становится 6.
Я не уверен, что происходит в этой следующей строке:
p = q;
Я думаю, что это означает: "адрес I равен адресу J". Я не знаю, какие конечные значения i и j будут в этой ситуации. Можете ли вы помочь мне понять, что происходит?
'р = q; 'означает, что' p' теперь указывает на то, где 'q' указывает, что находится на' j'. Строка после этого означает, что 'j' заканчивается значением' 7', и как '* p', так и' * q' также оцениваются до 7. Однако вы получили все остальное. –
одним из способов сделать это проще - запустить его в отладчике (на основе IDE это лучше всего, потому что вы можете видеть каждую переменную после каждого шага). – KevinDTimm
Спасибо за подсказку @KevinDTimm – TheEyesHaveIt