c - 如何在结构体中初始化数组?

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

最佳答案

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

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

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

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

相关文章:

javascript - 循环遍历 Google App 脚本并设置多个不连续的值

c++ - 如何制作指向另一个子 vector 中项目的指针 vector ?

python - Linux:如何模拟接口(interface)上的传入数据包?

C 中的组合求和

javascript - 为什么我的输入被插入到具有相同索引的两个不同数组中? (js)

ios - 如何快速将数组连接到另一个 View Controller ?

c - 了解指针取消引用和数组索引之间的区别

c - 难以理解这段代码的工作原理(双指针)

c++ - unsigned 关键字可以以非显而易见的方式使用吗?

无法使用 atoi() 将 char 数字转换为 int