способом?
Я иду сначала обратно (i -= 1) пока не встречу ошибку. Потом вперёд (i += 1).
Потом складываю получившиеся максимальные значения и получаю 8мб
unsigned char x = 'A';
int i;
for (i = 0; i <= 10000000; i -= 1) {
printf("i is %i, p is %c\n", i, *(&x + i));
}
Слова тут есть, а кода нет... Какая ошибка, где это "сначала назад, потом вперёд, складываю"... К тому же, никакого стэка в С нет, что ты вычисляешь, не понятно. Можешь привести ссылку на документацию, стандарт, описывающую этот самый стек, размер которого ты вычисляешь?
Ты имеешь ввиду что это не описано в спецификации? Но де факто он же есть. Разве есть реализации C без стек памяти?
Безусловно, есть реализации С на платформах, где не применяется так называемый стек для вызовов функций.
За новый знания спасибо, но шо то ты прям жостко докопался, понятно же что я имел ввиду
Где это всё в коде написано? Можешь добавить вот к каждой строчке твоего кода в виде комментариев, что ты где из этого делааешь? Просто у тебя это не получится, потому что код этого всего не делает от слова "совсем".
Код делает только одну часть (-1), потом я меняю - на плюс (i += 1) и запускаю его заново. Если не понятна мысль и так, то могу расписать построчно
Ну, мне расписывать-то не надо, мне это не интересно, это ты вопрос задавал. А эти волнующие подробности мы узнали только вот сейчас. Оказывается , 2/3 кода лишь у тебя в голове...
Возвращаясь к этому вопросу. Сегодня додумался посмотреть как мой код выглядит в ассамблере (прикладываю скрин из дебагера с кодом и вссабмлером). В итоге получается, что никакой магии под капотом не происходит при разыменовании указателя т.е. там хранится напрямую адрес памяти через который и вытаскивается нужный объект в регистр. Я прав?
адресация (грубо говоря) будет происходить по сумме указателя и смещения, то есть в сгенерированном коде, при доступе к полю к указателю на структуру прибавится константа ответственная за смещение относительно начала структуре, тогда получается указатель на начало поля. И только потом этот указатель разыменовывается
да, указатель это абстракция над адресами в процессорах. Переменные типа указатель хранят адреса напрямую
Обсуждают сегодня