我想在 C 中使用一些 for
循环,并为它们使用公共(public)索引。我想使用指针,因为稍后我可以释放它。
我想到了这样的事情:
uint8_t *p = malloc(sizeof(uint8_t));
for (*p = 0; *p < 255; *p++)
{
// Instructions...
}
// A few loops...
free(p);
但是这段代码不能按我想要的方式工作。我该如何修复它?
PS 我是 C 指针的初学者。
最佳答案
通过这一行:
uint8_t *p = malloc(sizeof(uint8_t));
您正在分配适合容纳一个uint8_t
的内存。您不应该触摸 p 之后的任何其他地址,因为您没有分配它们。您可能需要执行以下操作:
uint8_t *p = malloc(255 * sizeof(uint8_t));
上一行分配的内存可容纳 255 个 uint8_t
而不是仅一个。这样,您就可以访问从 p
到 p + 254
的地址。
关于c - for循环中指针作为索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59125737/