C语言中的结构体指针,结构体中的指针成员如何打印
时间: 2024-09-23 15:01:40 浏览: 30
深入分析C语言中结构体指针的定义与引用详解
在C语言中,结构体指针用于存储结构体类型的变量地址。当你有一个指向结构体的指针时,你可以通过这个指针访问和操作结构体的所有成员,包括其内部包含的指针成员。
假设有一个名为`Person`的结构体,它包含了姓名`char name[]`和年龄`int age`,以及另一个结构体`Address`的指针`Address *address`:
```c
struct Address {
char street[50];
int zipCode;
};
typedef struct Person {
char name[50];
int age;
struct Address *address; // 结构体Address的指针
} Person;
// 定义一个Person类型的结构体实例,并创建它的指针
Person p = {"John", 30, (struct Address*)malloc(sizeof(struct Address))};
Address a = {"123 Main St", 12345}; // 地址数据
// 使用结构体指针打印结构体及其指针成员
void printPersonInfo(Person *person) {
printf("Name: %s\n", person->name);
printf("Age: %d\n", person->age);
if(person->address != NULL) { // 检查地址是否有效
printf("Address: Street: %s, Zip Code: %d\n", person->address->street, person->address->zipCode);
} else {
printf("No address provided.\n");
}
}
// 打印p结构体的信息
printPersonInfo(&p); // &p是p的地址,作为函数参数传递
```
在这个例子中,`printPersonInfo`函数接受一个`Person`类型的指针,并通过`*`运算符来间接访问和打印结构体成员,包括`address`指针所指向的数据。
阅读全文