表达式必须具有整数类型

时间:2014-09-10 09:25:23

标签: c pointers

我得到了编译错误,因为这行旨在将指针增加0x200(指向下一个段)

Flash_ptr = Flash_ptr + (unsigned char *) 0x200;

我见过this,但我没有使用任何非法符号!

P.S。指针初始化:

unsigned char * Flash_ptr = (unsigned char *) 0x20000; 

2 个答案:

答案 0 :(得分:4)

你不能添加两个指针。您可以向指针添加整数,并且可以减去两个指针以获得整数差异,但添加两个指针是没有意义的。因此,要解决您的问题,您只需要删除演员:

Flash_ptr = Flash_ptr + 0x200;

这会使Flash_ptr增加0x200 个元素,但由于Flash_ptr的类型为unsigned char *,因此这只会转换为0x200 bytes的增量< / em>的

为了使这部分循环并检查上限,你可以这样做:

while (Flash_ptr < (unsigned char *)0x50000) // loop until Flash_ptr >= 0x50000
{
    // ... do something with Flash_ptr ...
    Flash_ptr += 0x200;
}

答案 1 :(得分:0)

你不能添加两个指针。您可以做的是递增指针所持有的地址。移除(unsigned char *)演员。

如果您有兴趣,请详细了解指针算术here