C语言中,在结构体中定义结构体
时间: 2023-11-08 08:01:47 浏览: 46
在C语言中,我们可以在结构体中定义结构体。这种定义结构体的方式通常被称为“嵌套结构体”。
下面是一个例子:
```c
struct address {
char city[50];
char state[50];
};
struct person {
char name[50];
int age;
struct address addr;
};
```
在上面的例子中,`person`结构体包含了一个`address`结构体类型的成员变量`addr`,也就是说一个`person`结构体中包含了一个`address`结构体。这个嵌套结构体的使用方式与普通结构体的使用方式一样,可以直接通过`.`运算符来访问其成员变量,例如:
```c
struct person p;
p.age = 20;
strcpy(p.name, "Tom");
strcpy(p.addr.city, "Beijing");
strcpy(p.addr.state, "China");
```
可以看到,我们可以直接通过`p.addr.city`和`p.addr.state`来访问`person`结构体中的`address`结构体中的成员变量。
相关问题
C语言结构体中定义结构体
以下是C语言结构体中定义结构体的例子:
```c
typedef struct Person {
char name[16];
int age;
} person;
typedef struct Student {
person info;
int grade;
} student;
int main() {
student s;
strcpy(s.info.name, "Tom");
s.info.age = 18;
s.grade = 90;
printf("Name: %s\n", s.info.name);
printf("Age: %d\n", s.info.age);
printf("Grade: %d\n", s.grade);
return 0;
}
```
在这个例子中,我们定义了两个结构体`Person`和`Student`。`Student`结构体中包含了一个`Person`类型的成员变量`info`和一个整型成员变量`grade`。我们在`main`函数中定义了一个`student`类型的变量`s`,并对其成员变量进行了赋值。最后,我们输出了`s`的成员变量值。
C语言中的结构体数组
C语言中的结构体数组是指数组中的每个元素都是一个结构体类型的变量。结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。定义结构体数组和定义结构体变量的方式类似,可以通过以下方式定义一个结构体数组:
```c
struct student {
char name[20];
int age;
float score;
};
struct student class[5]; // 定义一个包含5个元素的结构体数组
```
上述代码定义了一个名为`student`的结构体,包含了学生的姓名、年龄和分数三个成员变量。然后通过`struct student class`定义了一个包含5个元素的结构体数组`class`,每个元素都是一个`student`类型的结构体变量。
我们可以通过下标访问结构体数组中的元素,例如:
```c
class[0].age = 18; // 为第一个元素的age成员变量赋值为18
```
上述代码将结构体数组`class`中第一个元素的`age`成员变量赋值为18。