struct
我在C语言
中使用 a 时遇到问题。
这很奇怪!
我不能course
在结构中使用student
结构。
我之前已经定义过了,但是……为什么?
struct course
{
int no;
char name[30];
int credits;
float score;
};
struct student
{
int no;
char name[50];
course c[3];
};
我的语言是c而不是c++
class
C++ 和 C 之间的区别之一是您可以省略类型关键字,例如struct
在使用 C++ 类型时。
问题是线路course c[3];
。为了让它工作,你有两个选择——你可以在你的struct course
:
typedef struct _course // added an _ here; or we could omit _course entirely.
{
int no;
char name[30];
int credits;
float score;
} course;
struct
或者您可以在虚线前添加关键字,即。struct
course c[3];
您需要在结构名称前加上struct
关键字:
struct course
{
int no;
char name[30];
int credits;
float score;
};
struct student
{
int no;
char name[50];
struct course c[3];
};
struct course c[3];
应该管用...
struct student {
/* ... */
struct course c[3];
}
或者
typedef struct _course {
/* ... */
} course;
struct student {
/* ... */
course c[3];
}
您实际上应该能够定义一个匿名结构然后 typedef 它,所以:
typedef struct {
/* stuff */
} course;
然后正如其他人所说,
struct student {
course c[3];
}
typedef 很有帮助,因为它们允许您缩短声明,因此您不必总是输入单词struct
.
这是一个涉及对结构进行类型定义的示例。它还在学生结构中包含一个课程结构。
#include <stdio.h>
#include <string.h>
typedef struct course_s
{
int no;
char name[30];
int credits;
float score;
} course;
typedef struct student_s
{
int no;
char name[50];
course c[3];
} student;
bool isNonZero(const int x);
int main(int argc, char *argv[])
{
int rc = 0;
student my_student;
my_student.c[0].no = 1;
return rc;
}