我相当确定这个问题的答案是“不,别傻”,但正如他们所说,没有愚蠢的问题(只有愚蠢的人问这些问题)。
我想计算一个数组的偏移量。我有一个 void *
句柄和 sizeof(element)
。我没有 x*
指针(其中 x
是元素的类型)。
有什么方法可以将 void *
指针转换为给定大小之一,以便我可以根据该大小进行指针算术?目前,我正在转换为 char *
(假设 char
是 1 个字节*),然后将 sizeof 值乘以偏移量。如果我能以某种方式转换指针,那么我就可以使用数组语法,这会更干净。
正如我所说,我 99% 确信这是不可能的,我基本上是在要求 C 没有的语言级类型表示。但值得一问。
*我宁愿不这样做,因为这并不总是正确的。
最佳答案
正如一些人在评论中所说,sizeof(char)
保证为 1。C99 标准的相关部分在第 6.5.3.4 节中,描述 sizeof
运算符:
When applied to an operand that has type
char
,unsigned char
, orsigned char
, (or a qualified version thereof) the result [of thesizeof
operator] is 1.
这意味着强制转换 void *
至char *
并添加 N * sizeof(element)
是正确且惯用的。
(C 是静态类型,因此您无法转换为运行时确定的类型)。
关于c - 可以转换为在 C 运行时确定的给定类型的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318931/