指向结构体的指针数组
时间: 2023-11-08 07:54:48 浏览: 95
指向结构体的指针数组是一个数组,其中的每个元素都是指向结构体的指针。通过这个指针数组,可以方便地对多个结构体进行操作。例如,可以通过指针数组的元素来访问结构体的成员变量。
下面是一个示例代码,展示了如何定义和使用指向结构体的指针数组:
```
struct Student {
int num;
char name[10];
char sex;
double height;
};
int main() {
// 定义一个包含3个元素的指向Student结构体的指针数组
struct Student *p[3];
// 创建3个Student结构体,并将指针存储到指针数组中
struct Student stu1 = {1, "Tom", 'M', 175.5};
struct Student stu2 = {2, "Alice", 'F', 160.0};
struct Student stu3 = {3, "Bob", 'M', 180.0};
p[0] = &stu1;
p[1] = &stu2;
p[2] = &stu3;
// 通过指针数组的元素访问结构体的成员变量
printf("学生1的姓名:%s\n", p[0]->name);
printf("学生2的性别:%c\n", p[1]->sex);
printf("学生3的身高:%.1f\n", p[2]->height);
return 0;
}
```
相关问题
结构体指针数组
结构体指针数组是由结构体指针组成的数组。每个元素都是一个指向结构体的指针,指向的结构体具有相同的成员变量,但是每个元素的成员变量值可以不同。可以通过数组下标访问每个元素,也可以通过指针的方式访问每个元素的成员变量。例如,定义一个结构体指针数组:
```
struct student {
char name[20];
int age;
};
struct student *s[3];
```
这个结构体指针数组包含3个元素,每个元素都是指向struct student类型的指针。可以通过如下方式为每个元素赋值:
```
struct student stu1 = {"Tom", 18};
struct student stu2 = {"Jerry", 19};
struct student stu3 = {"Mike", 20};
s[0] = &stu1;
s[1] = &stu2;
s[2] = &stu3;
```
这样,s数组就包含了3个指向不同struct student类型的指针,可以通过指针访问每个元素的成员变量。例如,可以通过如下方式访问s数组的第一个元素的name成员变量:
```
printf("%s", s[0]->name);
```
结构体指针指向结构体数组
结构体指针可以指向结构体数组,可以通过指针来访问和操作数组中的每个结构体成员。下面是一个示例代码:
```c
#include <stdio.h>
struct Person {
char name[20];
int age;
};
int main() {
struct Person people[3] = {
{"Alice", 25},
{"Bob", 30},
{"Charlie", 35}
};
struct Person *ptr = people; // 指向结构体数组的指针
for (int i = 0; i < 3; i++) {
printf("Person %d: Name = %s, Age = %d\n", i+1, ptr->name, ptr->age);
ptr++; // 指针后移
}
return 0;
}
```
输出结果为:
```
Person 1: Name = Alice, Age = 25
Person 2: Name = Bob, Age = 30
Person 3: Name = Charlie, Age = 35
```
阅读全文