下面的代碼是一個例子,地址是指微控制器的閃存,所以它不會指向任何垃圾數據。增加一個固定值的指針
我想要做的是將指針「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