如何初始化结构中的数组?

时间:2015-06-29 21:02:05

标签: c arrays pointers struct pointer-to-array

我有一个定义为

的结构
struct new{
  int x;
  int y;
  unsigned char *array;
};

我希望数组是一个基于用户输入动态初始化的数组。内部主要功能:

struct new *sbi;
sbi->array = (unsigned char*)malloc(16 * sizeof(unsigned char));

      for(i=0; i<16; i++)
        {
          sbi->array[i] = 0;
        }

      for(i=0; i<16; i++)
        printf("Data in array = %u\n", (unsigned int)sbi->array[i]);

我确信我对malloc做错了但是我没有得到它 - 它只是一直给出分段错误。

1 个答案:

答案 0 :(得分:2)

您将sbi声明为指向struct new的指针,但从不为其分配内存。试试这个:

struct new *sbi;
sbi = malloc(sizeof(struct new));

另外,不要施放malloc的结果,因为这可以掩盖其他错误,并且不要忘记检查malloc的返回值。