【发布时间】:2016-11-01 02:46:00
【问题描述】:
我需要在不使用. 和-> 的情况下访问嵌套结构中的一些元素
我需要从测试笔记本电脑定义中打印出keyValue 和alternateKeyValue 的值,而不使用. 或-> 运算符直接引用qwerty 结构或其成员。
这是结构。
typedef struct
{
bool leftButton;
bool rightButton;
bool middleButton;
bool mouseOn;
mouse_direction_E direction;
} mouse_S;
typedef struct
{
char keyValue;
char alternateKeyValue;
} keyboard_S;
typedef struct
{
mouse_S simpleMouse;
keyboard_S qwerty;
} laptop_S;
laptop_S test=
{
.simpleMouse =
{
.leftButton = false,
.rightButton = false,
.middleButton = false,
.mouseOn = false,
.direction = MOUSE_NONE,
},
.qwerty =
{
.keyValue = '5',
.alternateKeyValue = '%'
},
};
int main()
{
char c = tesla.qwerty.keyValue;
char d = tesla.qwerty.alternateKeyValue;
printf("KeyValue = %c\n", c);
printf("alternateKeyValue = %c\n", d);
}
这可行,但有没有办法在不使用“.”的情况下访问 KeyValue 和 alternateKeyValue?
【问题讨论】:
-
下次请用CTRL+K缩进(选中代码块再CTRL+K)
-
您可以使用
offsetof()和类型转换。但你为什么要这样做呢?