指针的 C 内存分配



我正在尝试在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,你就不需要投malloccalloc

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);

完成后免费..

/一个

相关内容

  • 没有找到相关文章

最新更新