我想了解一些已发布的代码。它就像这样......
void *base_address;
int j;
然后
*((uint32_t *)base_address+ j)=j;
如果j是一个计数器,这是否意味着如果我的计数器计数为1,则base_address计数为4以允许最多32位整数的空间?
如果这是正确的,程序员是如何使用这种语法的?
*((uint32_t *)
答案 0 :(得分:7)
如果j
按1
计算,则(uint32_t *)base_address+ j
表达式计数为4,即sizeof(uint32_t)
。
您的帖子中的语法是下面代码的一个版本,除了您的代码是在没有引入其他变量的情况下编写的:
uint32_t *ptr = (uint32_t *)base_address;
*(ptr+j) = j;
或其等价物
uint32_t *ptr = (uint32_t *)base_address;
ptr[j] = j;