gpt4 book ai didi

C:是否可以通过知道变量的地址来找到变量的数据类型

转载 作者:行者123 更新时间:2023-11-30 19:57:29 25 4
gpt4 key购买 nike

在C语言中,是否可以通过知道变量的地址来找到变量的数据类型?

例如,我正在尝试创建一个类型的表:

{
int id,
void *ptr_to_var,
float conversion
}


/*Id Variable Conversion_formula*/
{
{0x01, &var_1, 0.4},
{0x05, &var_2, 0.2}
}

...等等

然后,我需要访问这些变量的内容并应用一些转换。变量(var_1,var_2)可以在其他地方声明为不同的数据类型。

最佳答案

如果变量的地址为 void*,则无法找出该变量的数据类型。这种无能力插入了 C 库 API 中的许多设计决策,例如需要在 scanf 中为仅长度不同的类型提供匹配的格式说明符(float >doubleintshortlong long 等)

为了做出此决定,调用者需要以某种方式提供特定的类型信息,例如

enum var_type {
vt_float
, vt_double
, vt_int
, vt_long
};
struct mystruct {
int id,
var_type type;
void *ptr_to_var,
float conversion
};
...
{
{0x01, vt_float, &var_1, 0.4}
, {0x05, vt_int, &var_2, 0.2}
}

关于C:是否可以通过知道变量的地址来找到变量的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847313/

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