我正在尝试在C中构建一个名为PROCESS的结构,该结构应包含进程的ID(id(和等待时间(wt(。
typedef struct PROC{
int id;
int wt;
}PROCESS;
PROCESS *pt = NULL;
现在我想像数组一样制作这个结构的多个实例。我想做的是这样的':
PROCESS pt[10];
pt[0].id = 5;
pt[1].id = 7;
但我想使用动态内存分配来做到这一点:
pt = calloc(2,sizeof(PROCESS));
pt[0]->id = 5;
我的错误是什么?
pt
是指向PROCESS
的指针,pt[0]
是pt
指向的第一个PROCESS
对象。访问结构成员的->
运算符只能与指针一起使用,否则使用.
pt[0].id = 5;
会是正确的。1
既然你说你在做C,你就不需要投malloc
或calloc
。
PROCESS *pt = calloc(2, sizeof *pt);
if(pt == NULL)
{
// errror handling
// do not continue
}
pt[0].id = 5;
pt[1].id = 7;
另外不要忘记检查calloc
的返回值,不要忘记免费记忆后来与free(pt);
.
福特诺斯
1请注意,这相当于
pt->id = 5;
但是如果你想设置第二个元素的id
,你需要做
(pt+1)->id = 7;
但我认为这样做更具可读性
pt[1].id = 7;
typedef struct process{
int id;
int wt;
}processes;
我会像这样分配——>
int numberOfDynamicStructs=2;
processes* myProcesses= calloc(numberOfDynamicStructs,sizeof(processes));
写>
myProcesses[0].id=1;
myProcesses[1].id=2;
读取>
printf("%d %d",myProcesses[0].id,myProcesses[1].id);
完成后免费..
/一个