访问结构内部的结构变量

时间:2013-08-30 16:33:21

标签: c struct

我有以下结构:

typedef struct
{
    char member1[100];
    char member2[100];
} struct1_t;

typedef struct
{
    struct1_t member_struct1;
} struct2_t;

typedef struct1_t *struct1_ptr;
typedef struct2_t *struct2_ptr;

我想访问member_struct1内的struct2,但我在以下代码中遇到非标量转换错误:

struct2_ptr driver = (struct2_ptr) malloc(sizeof(struct2_t));
driver->member_struct1 = (struct1_t)malloc(sizeof(struct1_t));

请建议。

2 个答案:

答案 0 :(得分:2)

第一个电话

struct2_ptr driver = (struct2_ptr) malloc(sizeof(struct2_t));

member_struct1分配存储空间,以便您可以在第一个driver->member_struct1之后安全取消引用malloc并删除第二行。

答案 1 :(得分:2)

您正在构建一个指向结构类型的指针:

driver->member_struct1 = (struct1_t)malloc(sizeof(struct1_t));

malloc返回一个指针。 struct1_t不是指针类型。使member_struct1成为指针类型。并且不要转换malloc的返回值。

E.g:

#include <stdlib.h>

typedef struct
{
    char member1[100];
    char member2[100];
} struct1_t;
typedef struct1_t *struct1_ptr;

typedef struct
{
    struct1_ptr member_struct1;
} struct2_t;
typedef struct2_t *struct2_ptr;

void your_func()
{
    struct2_ptr driver = malloc(sizeof(struct2_t));
    driver->member_struct1 = malloc(sizeof(struct1_t));
    // ...
}