结构的Malloc成员数组

时间:2014-03-25 00:44:03

标签: c arrays struct malloc

我在struct中有一个struct和一个动态数组。我想malloc这个数组,但我现在不怎么样。我希望该数组无效,因为我希望这个数组的成员是结构。你可以看到我尝试了一些东西,但它并没有真正起作用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct saf 
{
  int head;
  void **stack;
  int size;
}exp1;



void init(int n)
{

   struct saf exp1->stack = malloc(n);

}

int main()
{

 printf("Give size: ");
 scanf("%d",&exp1.size);
 init(exp1.size);

return 0;
}

3 个答案:

答案 0 :(得分:2)

我相信您正在寻找void *,例如,

void init (int n)
{
    exp1->stack = malloc(sizeof(void *) * n);
}

使用它时必须使用它。

答案 1 :(得分:2)

exp1不是指针。使用

exp1.stack = malloc(n);

答案 2 :(得分:0)

struct saf exp1.stack = malloc(n);

上述语句创建 n 内存位置数组,并将 void * 指针返回到起始地址。在这种情况下, stack 应该是单指针i,e void * stack; 如果你希望 stack 是一个双指针i,e void ** stack那么你应该使用

exp1.stack = malloc(sizeof(void *)* n);