【发布时间】:2023-03-26 14:38:04
【问题描述】:
我开始对 C 感到满意,然后我遇到了类型转换。如果我在 *.h 文件中定义了以下内容
struct data {
int value;
char *label;
};
这在另一个 *.h 文件中
# define TYPE void*
如何将 void 指针转换为结构,以便可以使用传递给函数的变量“TYPE val”?例如,如果我想利用 TYPE val 指向的值,我如何转换它以便可以将该值传递给其他函数?
【问题讨论】:
-
#define TYPE void*是个坏主意。它至少应该是typedef。考虑以下声明中会发生什么:TYPE x, y;或const TYPE x;。 -
另外,如果您正在处理
void*指针和C,则不需要进行任何显式转换。 C 允许void*指针被隐式强制转换:void* p = ...; struct data* val = p;. -
@jamesdlin 我同意这是一个坏主意,但这不是我的主意,所以我必须接受。因此,当
TYPE val作为 void 指针传递给函数时,我可以简单地声明struct data* temp = val;然后将 temp 传递给函数,然后我应该能够使用 temp->value? -
是的,然后你可以使用
temp->value。 -
谢谢,您的回答简单实用。如果它发布在答案部分,我会给它一个赞成票。