c - 指向结构的指针数组的动态分配

标签 c arrays dynamic struct malloc

我的程序中有 2 个结构。

id 的链表和一个 WORD

typedef struct related
{
    int id;
    struct related* next;
} RELATED;

typedef struct word
{
    int id;
    char name[NAME_LEN];
    RELATED *related;
} WORD;

我想保存一个 WORD 数组,并且我希望它是动态的。

我有 2 个指向单词的指针:

WORD* word1;
WORD* word2;

有值(value)观。

当我尝试以这种方式动态分配它时:

WORD** arr = (WORD**)malloc(sizeof(WORD*)*10)  // to hold 10 words

并尝试向数组中添加一个词,第一个被正确添加,但第二个跑过了第一个:

arr[0] = word1;
arr[1] = word2;

当我这样定义数组时:

WORD* arr[40];

同样的单词添加效果很好

arr[0] = word1;
arr[1] = word2;

无法完全找到这种动态分配的正确方法..thnx 寻求帮助!

最佳答案

而不是

// arr as pointer to pointer to WORDS
WORDS** arr = (WORDS**)malloc(sizeof(WORDS*)*10);

分配

// arr as pointer to WORDS
WORDS* arr = malloc(sizeof(*arr) * 10);  // WORDS *, not WORDS **
  1. C gibberish ↔ English可能会有用。
  2. 在 C 中不鼓励转换 malloc() 的结果。
  3. 考虑 type *p = malloc(sizeof(*p) * N); 风格。 IMO 更易于维护且不易出错。

关于c - 指向结构的指针数组的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033729/

相关文章:

C++数组初始化

使用动态编程进行字符串操作

c - C 中的总线错误 10

c - 为什么我不能将函数指针强制转换为 (void *)?

c - 如何在 C 中播放 flash 动画?

c++ - 如何避免在 C/C++ API 中对字符串进行编码混淆?

C++制作指向const对象的指针数组

javascript - 数组切片返回 [object Object] 而不是值

c - 是否可以使用一次 calloc() 在 c 中动态分配二维数组?

c++ - 为什么我的类模板动态分配的数组属性只能存储一项?