gpt4 book ai didi

c - 可以转换为在 C 运行时确定的给定类型的指针吗?

转载 作者:行者123 更新时间:2023-12-03 21:57:16 26 4
gpt4 key购买 nike

我相当确定这个问题的答案是“不,别傻”,但正如他们所说,没有愚蠢的问题(只有愚蠢的人问这些问题)。

我想计算一个数组的偏移量。我有一个 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, or signed char, (or a qualified version thereof) the result [of the sizeof operator] is 1.

这意味着强制转换 void *char *并添加 N * sizeof(element)是正确且惯用的。

(C 是静态类型,因此您无法转换为运行时确定的类型)。

关于c - 可以转换为在 C 运行时确定的给定类型的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com