如何将来自struct的数组重置,构成一个长尾?

2026-04-16 18:234阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计296个文字,预计阅读时间需要2分钟。

如何将来自struct的数组重置,构成一个长尾?

我创建了这样一个结构体:`typedef struct { char *id; char *name; int birthYear; int finishedCourses; double average; 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;

现在我正在尝试设置一系列课程.

这就是我写的:

如何将来自struct的数组重置,构成一个长尾?

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

本文共计296个文字,预计阅读时间需要2分钟。

如何将来自struct的数组重置,构成一个长尾?

我创建了这样一个结构体:`typedef struct { char *id; char *name; int birthYear; int finishedCourses; double average; 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;

现在我正在尝试设置一系列课程.

这就是我写的:

如何将来自struct的数组重置,构成一个长尾?

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