c语言 结构体的成员是指针取值的写法
时间: 2024-09-25 09:19:01 浏览: 20
在 C 语言中,结构体的成员如果本身就是指针类型,可以直接通过结构体变量名加上`.`运算符或`->`运算符来访问其值。`.`通常用于静态存储类别(如栈上的结构体实例),而`->`用于动态分配的结构体(比如通过`malloc`创建的)。以下是示例:
假设我们有一个名为`Person`的结构体,其中包含一个指向`Address`类型的指针`home_address`:
```c
struct Address {
char street[50];
char city[30];
};
typedef struct Person {
char name[50];
struct Address* home_address; // 定义了一个指向Address的指针
} Person;
// 创建结构体实例并初始化指针
Person person;
person.name = "Alice";
person.home_address = malloc(sizeof(struct Address)); // 动态分配空间
person.home_address->street = "123 Main St"; // 使用->来取值和赋值
// 如果结构体在静态上下文中,也可以这样取值
Person static_person;
static_person.home_address->city = "New York";
```
要从`person`中取`home_address`的街道信息,只需编写`printf("%s", person.home_address->street);`。