-4

有关于如何使用其他函数的 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 指针访问其他结构的成员

4

2 回答 2

2

编译器也对第一行感到困惑;你不能取一个类型的地址。至于以下 void 指针,您有正确的想法:将其转换为您希望将其视为的指针类型。

于 2013-08-31T11:58:42.163 回答
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

于 2013-08-31T11:59:11.837 回答