c - 在 C 中使用带指针的模运算符

标签 c pointers modulo pointer-arithmetic

如果我有一个 char 指针,比如 char *ptr,它保存单个 ascii 字符的地址,并且想在该地址上使用模运算符,我该怎么做?每当我尝试使用 int modulo = ptr % 16 之类的基本操作来执行此操作时,我都会收到错误“二进制操作数无效”我对二进制算术的掌握很弱,所以我知道我需要继续发展这项技能,但如果有人能告诉我我在这里缺少什么概念,那将是一个很大的帮助,谢谢。

编辑:抱歉,我不太清楚我要完成的工作,但基本上我只需要显示一个有 16 个插槽的内存块。它是一个程序,在数组中找到一个 ascii 字符,我已经完成了,然后显示该 ascii 字符存储在其中的内存块。当我现在运行它时,它会显示找到的 ascii 字符和找到的字符之后的 15 个字符及其内存位置。而不是这样做,如果找到的 ascii 字符位于内存块的中间,我需要它来显示它周围存储的内容,而不仅仅是它之后的内容。因此,如果找到的字符在数组的 23 槽中,程序将显示字符和内存位置在数组的 16-31 槽中。

最佳答案

您需要临时转换为适当宽的整数,例如

#include <stdint.h>

ptr = (char*)((uintptr_t)ptr % 16);

结果指针是否有实际用途是另一回事。

关于c - 在 C 中使用带指针的模运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672282/

相关文章:

python - 在 Windows 上列出串行 (COM) 端口?

c - 在这种特殊情况下如何处理管道

c - VS 2010 中的枚举大小选项

c - 如何正确地将输入扫描到 C 中的结构中并将其显示出来?

javascript - 如何在 JavaScript 中计算负整数的模数?

c - 如何分配一个变量指针来访问msp430上的硬件寄存器?

c++ - 在 C++ 中使用显式/原始指针

c++ - 当我在 C++ 中对未初始化的指针调用 "delete"时会发生什么?

Python 模运算符给出意外结果

python - 求解大数的模线性同余