复杂结构体利用指针取值的例子?
时间: 2023-08-12 15:10:31 浏览: 113
下面是一个复杂结构体利用指针取值例子,其中结构体嵌套了另一个结构体,并使用指针来访问和修改内部结构体的成员:
```c
#include <stdio.h>
// 内部结构体
struct address {
char city[20];
char street[50];
};
// 外部结构体
struct person {
char name[20];
int age;
struct address *addr;
};
int main() {
// 创建一个外部结构体变量
struct person p;
// 创建一个内部结构体变量
struct address a;
// 将内部结构体的地址赋值给外部结构体的指针成员
p.addr = &a;
// 通过指针访问和修改内部结构体的成员
strcpy(p.addr->city, "Beijing");
strcpy(p.addr->street, "Main Street");
// 输出外部结构体的成员和内部结构体的成员
printf("Name: %s\n", p.name);
printf("Age: %d\n", p.age);
printf("Address: %s, %s\n", p.addr->city, p.addr->street);
return 0;
}
```
在上述代码中,我们定义了两个结构体:`address`和`person`。`person`结构体包含一个指向`address`结构体的指针成员`addr`。
在`main`函数中,我们创建了一个外部结构体变量`p`和一个内部结构体变量`a`。然后,我们将`a`的地址赋值给`p.addr`,即将外部结构体的指针成员指向内部结构体。
通过指针访问和修改内部结构体的成员时,我们使用`->`运算符来访问指针所指向的结构体的成员。例如,`p.addr->city`表示访问内部结构体的`city`成员。
最后,我们在`main`函数中输出了外部结构体的成员和内部结构体的成员,可以看到通过指针成功访问和修改了内部结构体的成员。
这个例子展示了如何使用指针来取值和修改复杂结构体中的成员,通过指针可以方便地访问和操作嵌套结构体中的数据。
阅读全文