c - for循环中指针作为索引值

标签 c for-loop pointers

我想在 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 而不是仅一个。这样,您就可以访问从 pp + 254 的地址。

关于c - for循环中指针作为索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59125737/

相关文章:

C 指针 - 交换

c - 使用临时变量或直接从数组更有效?

r - 如果语句条件错误在两个和问题中缺少值?

c - 删除C中数组中的垃圾值

c - gcc9+ 模数优化背后的数学

matlab - 如果满足条件,则在当前迭代步骤结束时退出循环

c - 尝试重新实现 strcat 并得到错误的结果

c - "&(epage->incoming[0]) = spage;"和 "&(epage->incoming[p2]) = spage;"之间的区别

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

html - 如何将用户的输入从 .html 文件获取到 .c 文件?