在C语言中,->是一个成员访问运算符,用于通过指针来访问结构体(struct)或联合体(union)的成员。
1、基本用法
结构体指针->成员名
2、示例说明
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
struct Student {
char name[20];
int age;
float score;
};
int main() {
// 创建结构体变量
struct Student s1 = {"张三", 20, 85.5};
// 创建指向结构体的指针
struct Student *ptr = &s1;
// 使用 -> 访问结构体成员
printf("姓名: %s\n", ptr->name); // 等价于 (*ptr).name
printf("年龄: %d\n", ptr->age); // 等价于 (*ptr).age
printf("分数: %.1f\n", ptr->score); // 等价于 (*ptr).score
// 修改成员值
ptr->age = 21;
ptr->score = 90.0;
printf("修改后的年龄: %d\n", ptr->age);
return 0;
}
3、与点运算符(.)的区别
| 运算符 | 使用场景 | 示例 |
|---|---|---|
. | 直接访问结构体变量 | s1.name |
-> | 通过指针访问结构体 | ptr->name |
struct Student s; // 结构体变量
struct Student *p; // 结构体指针
s.age = 20; // 使用点运算符
p->age = 20; // 使用箭头运算符
(*p).age = 20; // 等价于 p->age
4、动态内存分配中的使用
#include <stdio.h>
#include <stdlib.h>
struct Point {
int x;
int y;
};
int main() {
// 动态分配结构体内存
struct Point *p = (struct Point*)malloc(sizeof(struct Point));
if (p != NULL) {
// 使用 -> 访问和修改成员
p->x = 10;
p->y = 20;
printf("坐标: (%d, %d)\n", p->x, p->y);
free(p); // 释放内存
}
return 0;
}
5、总结
-
->用于通过指针访问结构体或联合体的成员 -
它是
(*指针).成员的简写形式 -
在使用动态内存分配或函数参数传递结构体指针时特别有用
-
使代码更简洁、易读
9682

被折叠的 条评论
为什么被折叠?



