结构体指针数组
时间: 2023-07-20 16:20:24 浏览: 121
结构体指针数组是由结构体指针组成的数组。每个元素都是一个指向结构体的指针,指向的结构体具有相同的成员变量,但是每个元素的成员变量值可以不同。可以通过数组下标访问每个元素,也可以通过指针的方式访问每个元素的成员变量。例如,定义一个结构体指针数组:
```
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语言结构体指针数组
结构体指针数组是一个数组,每个元素都是指向结构体的指针。可以通过结构体指针数组来管理多个结构体对象。
下面是一个示例代码:
```c
#include <stdio.h>
// 定义一个结构体
struct Person {
char name[20];
int age;
};
int main() {
// 定义结构体指针数组
struct Person* people[3];
// 创建结构体对象并赋值
struct Person p1 = {"Alice", 25};
struct Person p2 = {"Bob", 30};
struct Person p3 = {"Charlie", 35};
// 将结构体指针存储到数组中
people[0] = &p1;
people[1] = &p2;
people[2] = &p3;
// 访问结构体指针数组中的元素
for (int i = 0; i < 3; i++) {
printf("Name: %s, Age: %d\n", people[i]->name, people[i]->age);
}
return 0;
}
```
在上述代码中,我们定义了一个结构体 `Person`,包含了姓名和年龄两个字段。然后通过创建结构体对象,并将它们的地址存储到结构体指针数组 `people` 中。最后,通过遍历结构体指针数组,我们可以访问每个结构体对象的成员。
输出结果为:
```
Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35
```
这样,我们就使用结构体指针数组成功地管理了多个结构体对象。
结构体指针数组如何使用
结构体指针数组可以用于存储多个结构体的地址。可以通过下标索引来访问每个结构体的成员。
例如,定义一个结构体:
```
struct Person {
char name[20];
int age;
float height;
};
```
定义一个结构体指针数组:
```
struct Person *people[10];
```
使用时,可以先创建结构体并赋值,然后将其地址存储在指针数组中:
```
struct Person p1 = {"Alice", 25, 170.5};
people[0] = &p1;
```
也可以通过动态分配内存来创建结构体并存储其地址:
```
people[1] = (struct Person*) malloc(sizeof(struct Person));
strcpy(people[1]->name, "Bob");
people[1]->age = 30;
people[1]->height = 180.0;
```
访问结构体成员也可以使用指针数组:
```
printf("%s is %d years old and %.1f cm tall.\n", people[0]->name, people[0]->age, people[0]->height);
```
需要注意的是,使用完动态分配的内存后,需要及时释放,以免造成内存泄漏:
```
free(people[1]);
```
阅读全文