c - 如何重置指针
问题描述
玩完 malloc 给出的指针后。
uint8_t* mem = malloc(10);
uint8_t* rst = mem;
*mem++ <<= 3;
// etc...
mem = rst;
是否有任何其他“优雅”的方式来重置指向 malloc 给出的 ram 的第一个元素的指针,而不是在分配之后之前复制它的值?
解决方案
在这种特殊情况下,您可以使用rst
来进行指针调整,而mem
不必理会。
*rst++ <<= 3;
// etc...
如果您所做的修改作为一个功能单元有意义,那么您可以将代码封装在函数调用中,并rst
完全避免声明。
extern void adjust_mem(uint8_t *);
uint8_t* mem = malloc(10);
adjust_mem(mem);
推荐阅读
- javascript - 如何从方括号中的字符串返回字符串数组
- python-3.x - 在 Python3 中,经典的 mid = start + (end - start) / 2 抛出 TypeError: list indices must be integers or slices, not float
- css - 尝试在每行上实现 3 个元素时,flexbox 中的每个第 3 个元素都会中断
- php - PHP preg_replace 性能
- java - 如何根据变量/用户输入显示产品星级?
- python - AWS SAM 管道
- php - Homestead.test 说“没有指定输入文件”,当我提供流浪汉时,我得到以下信息:
- javascript - 使用 sqlite3 的异步/等待函数
- jinja2 - 引导模式没有出现 - jinja2
- java - 我必须将前两个八位字节从 int 转换为字节,而不是其他八位字节。为什么?