我创建了这个结构: typedef struct { char* id; char* name; int birthYear; int finishedCourses; double avarage; int coursesNow; int courses[MAX_COURSES_YEAR];}Student; 现在我正在尝试设置一系列课程. 这就是我写的:
typedef struct {
char* id;
char* name;
int birthYear;
int finishedCourses;
double avarage;
int coursesNow;
int courses[MAX_COURSES_YEAR];
}Student;
现在我正在尝试设置一系列课程.
这就是我写的:
s1.courses[] = {5,4,3,2};
而错误是:
通过初始化列表初始化数组仅在声明时允许.所以你可以这样做:student.c:15:13: error: expected expression before ‘]’ token
s1.courses[]={5,4,3,2};
int arr[] = {1,2,3,4,5};
但你做不到:
int arr[5];
arr = {1,2,3,4,5};
你必须使用循环或memcpy:
int tmp[] = {1,2,3,4,5};
// method 1
for(int i = 0; i < sizeof(tmp) / sizeof(*tmp); i++) {
arr[i] = tmp[i];
}
// method 2
memcpy(arr, tmp, sizeof(tmp));
您还可以利用复合文字并省去tmp数组:
memcpy(arr, (int []) {1,2,3,4,5}, sizeof((int []) {1,2,3,4,5}));
