首页 > 解决方案 > 如何重置指针

问题描述

玩完 malloc 给出的指针后。

uint8_t* mem = malloc(10);
uint8_t* rst = mem;

*mem++ <<= 3;
 // etc...
 mem = rst;

是否有任何其他“优雅”的方式来重置指向 malloc 给出的 ram 的第一个元素的指针,而不是在分配之后之前复制它的值?

标签: cpointersmalloc

解决方案


在这种特殊情况下,您可以使用rst来进行指针调整,而mem不必理会。

*rst++ <<= 3;
 // etc...

如果您所做的修改作为一个功能单元有意义,那么您可以将代码封装在函数调用中,并rst完全避免声明。

extern void adjust_mem(uint8_t *);

uint8_t* mem = malloc(10);

adjust_mem(mem);

推荐阅读