#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct PROCESS{
int priority;
int lifecycle;
int ttl;
}process1,process2,process3,process4,process5,process6;
main(){
PROCESS *waiting_queue;
waiting_queue = process1; //this is were I get the error.
waiting_queue =(PROCESS *)malloc(6*sizeof(PROCESS));
if(!waiting_queue){printf("no memory for waiting queue "); exit(0);}
getch();
}
我正在尝试使用指针创建结构数组。我收到了错误。在';'之前的预期主要表达令牌
答案 0 :(得分:4)
您应该从(process1到process6)创建结构对象。
让我举个例子:
#include <stdio.h>
#include <string.h>
typedef struct student
{
int id;
char name[20];
float percentage;
} status;
int main()
{
status record;
record.id=1;
strcpy(record.name, "Orcun");
record.percentage = 86.5;
printf(" Id is: %d \n", record.id);
printf(" Name is: %s \n", record.name);
printf(" Percentage is: %f \n", record.percentage);
return 0;
}
这就是您在主要功能中收到错误的原因。所以你应该创建你的struct对象,如:
process1 processOrcun;
您也可以在此处查看:https://www.codingunit.com/c-tutorial-structures-unions-typedef
答案 1 :(得分:3)
您有多个问题,但导致错误的问题是您没有定义类型 PROCESS
,而是结构名。
当您使用typedef
定义结构类型时,类型名称在结构后出现:
typedef struct
{
...
} PROCESS;
您遇到的错误是因为您定义了例如process1
作为类型,因此赋值(使指针指向某个类型)没有任何意义。
另一个不相关的问题是如何定义main
函数。必须将其定义为返回int
(即使您的声明隐式执行,明确地执行此操作)并且要么使用void
作为参数,要么返回一个整数和一个数组指向char
的指针。在你的情况下它应该看起来像
int main(void) {
...
return 0;
}