有关如何使用其他函数的void指针访问其他结构元素的问题??
typedef struct
{
char Buf[20];
char Str[20];
}Sample;
typedef struct
{
char Data[20];
int i;
} Test;
无效指针结构
typedef struct
{
void *New;
int j;
} Datastruct;
int main()
{
//i am confused with first line
Datastruct->New = &Sample;
strcpy((( sample*)Datastruct->New )->Buf,"adam");
printf(" Datastruct->New->Buf");
Datastruct->New = &Test;
strcpy((( Test*)Datastruct->New)->Data,"Eve");
printf("Datastruct->New->Data");
return 0;
}
请让我知道如何通过void指针访问其他结构的成员
答案 0 :(得分:2)
编译器也对第一行感到困惑;你不能拿一个类型的地址。至于跟随void指针,你有正确的想法:把它投射到你想要它的指针类型。
答案 1 :(得分:1)
这是一个固定版本,实际编译和工作没有错误:
#include <string.h>
#include <stdio.h>
typedef struct {
char Buf[20];
char Str[20];
} Sample;
typedef struct {
char Data[20];
int i;
} Test;
typedef struct {
void *New;
int j;
} Datastruct;
int main() {
Datastruct d;
Sample s;
d.New = &s;
strcpy(((Sample*)d.New )->Buf,"adam");
printf("Datastruct->New->Buf\n");
Test t;
d.New = &t;
strcpy(((Test*)d.New)->Data,"Eve");
printf("Datastruct->New->Data\n");
return 0;
}
在原作中,您将->
与.
和类型(例如Datastruct
)混淆为该类型的变量。