首页 > 解决方案 > 指针作为 for 循环中的索引值

问题描述

我想for在 C 中使用一些循环并为这些循环使用公共索引。我想使用指针,因为我以后可以释放它。
我想到了类似的东西:

uint8_t *p = malloc(sizeof(uint8_t));

for (*p = 0; *p < 255; *p++)
{
  // Instructions...
}

// A few loops...

free(p);

但是这段代码不能按我的意愿工作。我该如何解决?

PS我是C指针的初学者。

标签: cfor-looppointers

解决方案


通过这一行:

uint8_t *p = malloc(sizeof(uint8_t));

您正在分配适合容纳 ONE 的内存uint8_t。您不应该在 p 之后触摸任何其他地址,因为您没有分配它们。您可能需要执行以下操作:

uint8_t *p = malloc(255 * sizeof(uint8_t));

上一行分配的内存可以容纳 255uint8_t而不是一个。这样,您可以访问从p到 的地址p + 254


推荐阅读