用**指针重新分配结构到另一个结构

时间:2018-11-06 23:39:34

标签: c

如何将一个结构内的双指针重新分配给另一个结构?

双指针不用作2d数组。

代码示例。

struct x_tag {
  int a;
  int b;
};
typedef struct x_tag x_t;

struct y_tag {
  x_t ** p;
  int n;
};
typedef struct y_tag y_t;

/////////////////////////////////
y_t * d = malloc(sizeof(*d));
x_t * c = malloc(sizeof(*c));
d->p = &c;
/////////////////////////////

d->p = realloc(d->p, d->n*sizeof(x_t)); doesn't work.
d->p[0] = realloc(d->p[0], d->n*sizeof(x_t)); doesn't work.
*(d->p) = realloc(*(d->p), d->n*sizeof(x_t)); doesn't work.
*(d->p)[0] = realloc(*(d->p)[0], d->n*sizeof(x_t)); doesn't work.

有什么想法吗?

///////更多信息////////

该结构不是我定义的,但是不幸的是我需要使用它。在这种情况下,双指针对我也没有意义。

主要思想是动态更改(y_t ** p)的大小。每次添加另一个结构(x_t)时,程序应更改双指针大小。

|*d|--->|struct y_t|--->|**p|--->|*p|--->|struct x_t [0]|
               |----->n           |----->|struct x_t [1]|
                                  |----->|struct x_t [2]|

我将代码更改为:

 y_t * d = malloc(sizeof(*d));
 d->p = malloc(sizeof(*d->p));
 d->p[0] = malloc(sizeof(*d->p[0]));

不起作用。

0 个答案:

没有答案