我的程序中有 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 **
- C gibberish ↔ English可能会有用。
- 在 C 中不鼓励转换
malloc()
的结果。 - 考虑
type *p = malloc(sizeof(*p) * N);
风格。 IMO 更易于维护且不易出错。
关于c - 指向结构的指针数组的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033729/