我有一个结构定义为

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


我希望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上做错了什么,但我没有得到它-它只是不断给分段错误。

最佳答案

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

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


另外,不要强制转换malloc的结果,因为这会掩盖其他错误,并且不要忘记检查malloc的返回值。

关于c - 如何在结构内部初始化数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31125507/

10-09 09:06