#include <stdio.h>
#include <stdlib.h>
main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
printf(" All is well ");
}
问问题
101 次
6 回答
2
strcVar
是一个(本地)数组名称,您不能为其分配指针。你可能想要:
strc* strcVar;
... /* and later */
strcVar[0].info = 1;
也许您想要一个指向 的指针数组struct strc
,那么 Vaughn Cato 的回答会有所帮助。
于 2013-02-12T13:34:44.020 回答
2
此行是错误且不必要的:
strcVar = malloc(sizeof(strc) * 5);
相反,您可以使用:
{
int i=0;
for (;i!=5; ++i) {
strcVar[i] = malloc(sizeof(strc));
}
}
于 2013-02-12T13:34:44.357 回答
2
您不能从其中分配一个数组malloc
- 它是一个或另一个。如果您声明了一个包含五个指针的数组,则它们的内存已经分配。如果必须使用malloc
,请使用指向指针的指针而不是数组。否则,用 分配单个项目malloc
,而不是数组:
strc* strcVar[5];
strcVar[0] = malloc(sizeof(strc));
于 2013-02-12T13:35:11.613 回答
2
Change
strc* strcVar[5];
to
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
OR
Change
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
to
strc strcVar[5];
strcVar[0].info = 1;
于 2013-02-12T13:37:45.920 回答
1
修复代码:
#include<stdio.h>
#include<stdlib.h>
void main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
printf(" All is well ");
}
于 2013-02-12T13:37:31.253 回答
0
在任何数组中,基地址都是一个 const 指针。你不能改变它。
假设如果你有 int a[5];
这里 a 是整个数组的基指针,你不能改变它。
这适用于所有数组。
于 2013-02-12T15:37:55.633 回答