【发布时间】:2011-01-03 20:55:50
【问题描述】:
忽略填充/对齐问题并给出以下结构,在不使用成员名称的情况下获取和设置 member_b 值的最佳方法是什么。
struct mystruct {
int member_a;
int member_b;
}
struct mystruct *s = malloc(sizeof(struct mystruct));
换一种说法;您将如何用指针/偏移量表达以下内容:
s->member_b = 3;
printf("%i",s->member_b);
我的猜测是
- 通过查找 member_a (
int) 的大小来计算偏移量 - 将结构转换为单字指针类型 (
char?) - 创建一个
int指针并设置地址(到*charpointer + offset?) - 使用我的
int指针来设置内存内容
但我对转换为 char 类型感到有些困惑,或者像 memset 这样的东西是否更合适,或者我通常完全错误。
为任何帮助干杯
【问题讨论】:
-
为什么你想这样做?
-
我在脚本环境和 C 扩展之间架起了一座桥梁(想想 Python C 类型),我在运行时定义和访问结构。
-
那你是在生成C代码吗?在这种情况下,您也可以生成 C 代码来访问结构成员。我误会了吗?