下面的代码是一个例子,地址是指微控制器的闪存,所以它不会指向任何垃圾数据。增加一个固定值的指针
我想要做的是将指针“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