类名的c版本

类名的c版本,c,class,types,C,Class,Types,如何在c中获取变量的类型?目标c有类名,php有get_class(),等等。祝你好运。C将把任何内存块转换为您喜欢的任何数据类型。它并不真正理解类型本身。您可以查看源代码并找到类型;因为C中没有动态类型,所以只有静态类型。您不能这样做。C绝对不能提供获取变量类型的方法 一种方法是使用sizeof运算符获取变量的大小,然后根据该值,您可以对变量是什么进行“假设”。 不过,我认为这对指针没有帮助,因为我的直觉是,所有指针的大小都相同,不管它们引用的是什么。因为在C中不可能*有未知类型的变量,所以没

如何在c中获取变量的类型?目标c有类名,php有get_class(),等等。

祝你好运。C将把任何内存块转换为您喜欢的任何数据类型。它并不真正理解类型本身。

您可以查看源代码并找到类型;因为C中没有动态类型,所以只有静态类型。

您不能这样做。C绝对不能提供获取变量类型的方法

一种方法是使用
sizeof
运算符获取变量的大小,然后根据该值,您可以对变量是什么进行“假设”。

不过,我认为这对指针没有帮助,因为我的直觉是,所有指针的大小都相同,不管它们引用的是什么。

因为在C中不可能*有未知类型的变量,所以没有必要这样做。对于C类型,没有等价的
id
。有可能会有一个指向内存的空指针,您不知道它的预期类型,但它必须被强制转换为指向特定类型的指针,以便实际拥有任何特定类型-在那之前,它只是一个地址

在有些地方,更多的多态性可能是有用的,但C就是没有


(*注意:我不考虑联合,因为它们是自己的类型,真正的问题是你想从中得到什么类型。)

正如其他答案所说,C不提供动态的运行时类型检查-所有类型都是在编译时执行的。如果您需要在C中确定运行时类型,那么您需要以某种方式自己构建它

一些例子,

  • 将标记放入指示类型的结构中
  • 使用
    printf()
    中的格式说明符字符串等其他数据来指示类型

例如,如果要将数据序列化到文件或从文件序列化数据,可能需要执行以下操作。不幸的是,编译器或标准库对您几乎没有帮助。一个第三方的序列化库可能会有帮助,但这将取决于你到底想做什么。< /P>你使用C还是C++?C没有类,也没有一个标准的方法来做这件事。关于指针,您可以取消对它们的引用,然后调整指针的大小。但是,忘记了取消引用。取消引用它们并没有帮助,因为您只能获得指针类型的大小(即,即使char*foo实际上是指向int的指针,它也将取消引用为char,并返回该大小),这在代码中很可能是可见的。当然,这都是因为其他人都在说,你不能有“未知”类型。错误的创造力。在某些平台上,
float
double
的大小与
int
long
long
相同。此外,变量可以是
struct
s,并且可以创建一个
struct
,使其大小与
int
相同。困难。把汉堡包变成牛可能更容易。