C:指向任何类型的指针?

标签 c

我听说 C 不是那么类型安全,我认为我可以将其用作我当前项目的优势。

我正在设计一个解释器,目标是让 VM 非常快,例如比 Ruby 和 Python 快得多。

现在我知道过早优化“是万恶之源”,但这是一个概念性问题。

  • 我必须使用某种结构来表示我的语言中的所有值(从数字到字符串到列表和映射)

以下是否可能?

struct Value {
 ValueType type;
 void* value;
}
  • 我会将实际值存储在别处,例如:一个单独的字符串和整数数组,然后 value* 将指向此表中的某个成员。

  • 我总是会通过类型变量知道值的类型,因此不会有类型错误的任何问题。

现在:

这在语法和打字方面是否可行?

最佳答案

是的,您可以使用 void* 指向任何内容,然后在需要时将其转换为正确的类型(这就是 malloc 等可以工作的方式)。

void* 基本上是“指向任意内存块的指针”。

关于C:指向任何类型的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935955/

相关文章:

C 具有负股息和除数的模运算差异是长无符号的

c - 如何更改 char* 的内存地址?

c - 如何获取已安装文件系统的列表

c - 为什么在 LinkedList 的这个实现中会出现段错误

c++ - 用 printf 打印一个字符

c - 我的代码是否导致太多套接字没有得到释放

c - 递归和非递归得到不同的答案

c++ - 具有预处理器分支实现的结构是否违反了 ODR?

c - 在链表的头部插入一个新元素并打印元素值

c - 有没有办法将条件分配转换为无分支代码?