Быстрый вопрос относительно поведения указателей (я работаю над проектом на PIC32MX270F256D).
В настоящее время у меня реализован следующий код:
void main(void)
{
int size = 15;
int check;
int *ptr;
ptr = &size;
check = *ptr;
while(1); //just so it hangs at the end
}
Сейчас я прохожу программу с переменными часами. После объявления размера я вижу в окне просмотра, что размер имеет значение 15 и находится по адресу 0xA000FFC8 (пока все хорошо). После строки ptr = &size;
окно просмотра показывает, что ptr имеет значение 0xA000FFC8 (как и ожидалось). Теперь после последней строки (check = *ptr;
) окно просмотра сообщает, что check имеет значение 0xA000FFC8.
Мне кажется, это очень простая функциональность. В конце пока зависает в цикле while, чек должен иметь значение 15, нет? Если да, то мой код неверен или что-то не так с Microchip IDE? Если нет, то чего мне не хватает, чтобы все работало так, как должно?
Спасибо.
-Шон
Примечание. Я использую MPLAB X и компилятор Microchip XC32.
check
15, если заменитьint *ptr;
наvolatile int *ptr;
? Можно ли отключить оптимизацию компилятора? - person indiv   schedule 21.11.2014ptr
имеет значение адресаsize
, поэтому разыменование даст значениеsize
. - person Eugene Sh.   schedule 21.11.2014