C 指向结构的指针数组的动态分配
我的程序中有两个结构 id的链接列表和一个单词C 指向结构的指针数组的动态分配,c,arrays,dynamic,struct,malloc,C,Arrays,Dynamic,Struct,Malloc,我的程序中有两个结构 id的链接列表和一个单词 typedef struct related { int id; struct related* next; } RELATED; typedef struct word { int id; char name[NAME_LEN]; RELATED *related; } WORD; 我想要一个WORD的数组,我想要它是动态的 我有两个指向单词的指针: WORD* word1; WORD* word2;
typedef struct related
{
int id;
struct related* next;
} RELATED;
typedef struct word
{
int id;
char name[NAME_LEN];
RELATED *related;
} WORD;
我想要一个WORD的数组,我想要它是动态的
我有两个指向单词的指针:
WORD* word1;
WORD* word2;
有价值
当我尝试以这种方式动态分配时:
WORD** arr = (WORD**)malloc(sizeof(WORD*)*10) // to hold 10 words
WORD* arr[40];
尝试向数组中添加单词时,第一个单词被正确添加,但第二个单词会覆盖第一个单词:
arr[0] = word1;
arr[1] = word2;
当我以这种方式定义数组时:
WORD** arr = (WORD**)malloc(sizeof(WORD*)*10) // to hold 10 words
WORD* arr[40];
同样的加词效果很好
arr[0] = word1;
arr[1] = word2;
无法找到这种动态分配的正确方法。。谢谢你的帮助 而不是
// 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 **
malloc()
的结果type*p=malloc(sizeof(*p)*N)代码>样式。易于维护,不易出错
我找不到malloc()和使用指向WORD指针的指针作为数组的任何问题。有一件事我可以指出,您没有为word1和word2分配内存,它们有一个垃圾地址。正在将相同的垃圾地址分配给arr[0]和arr[1]。如果您上传完整的代码,它将有助于找出确切的问题。您可以使用以下代码片段为2D数组动态分配内存: 设“m”和“n”是数组的维数
WORDS** arr = (WORDS**)malloc(sizeof(WORDS*)*m);
for(int i = 0 ; i < m ; i++)
{
for(int j = 0 ; j < n ; j++)
{
arr[i] = (WORDS*)malloc(sizeof(WORDS)*n);
}
}
WORDS**arr=(WORDS**)malloc(sizeof(WORDS*)*m);
for(int i=0;i
不清楚的是“容纳10个单词”的注释。您的malloc()
包含10个指向单词的指针。此外,您只是想复制指针word1、word2
还是它们指向的日期?@Andrey Chasovski您是如何确定“但是第二个指针超过了第一个指针”?有了你编辑的信息,你似乎做得很好-需要更多信息。(是的,并没有释放内存,不过这很好)它应该可以工作,你能分享你的程序代码吗?