Приведенный ниже код является примером, и адреса предназначены для указания на флеш-память микроконтроллера, поэтому он не укажет на данные мусора.Приращение указателя с фиксированным значением
То, что я пытаюсь сделать, это указать указатель «end_adress» в конец блока памяти. В этом случае начало блока составляет 0x00001000, а конец блока - 0x00002000. Я хочу установить переменную «end_adress», используя знания начального адреса и размера блока памяти.
Это хороший способ решить проблему? Хорошо с точки зрения читаемого кода, любые другие предложения в основном приветствуются!
static const uint32_t memory_size = 0x00001000;
static volatile const uint32_t* start_address = (volatile const uint32_t*)0x00001000;
static volatile uint32_t* end_address;
int main(int argc, char *argv[])
{
end_address = start_address + (memory_size/sizeof(end_address));
printf("End adress: %x \n", end_address);
return 0;
}
Используйте 'char *' вместо 'void *'. Арифметика не будет работать на 'void *' (если компилятор не разрешает это как расширение языка). –
@MichaelBurr Спасибо, что указали это. :) – starrify