- C语言中的指针是一种特殊的变量,它存储了一个内存地址。
- 点(.)和箭头(->)是用于访问结构体和联合体成员的运算符。
点(.)运算符
- 点(.)运算符用于访问结构体或联合体变量的成员。当我们需要直接使用结构体的成员,并且不需要在不同的函数之间传递结构体时,可以选择定义结构体变量。这样可以直接通过结构体变量名和点运算符来访问结构体的成员。
- 当我们有一个结构体或联合体变量时,可以使用点运算符来访问该变量的成员。例如:
struct Person {
char name[20];
int age;
};
struct Person p;
p.age = 25;
箭头(->)运算符
- 箭头(->)运算符用于访问指向结构体或联合体的指针的成员。当我们需要在不同的函数之间传递结构体,或者需要动态分配内存来存储结构体时,可以选择定义指向结构体的指针。通过指针,我们可以方便地传递结构体的地址,避免了复制结构体的开销,并且可以在需要时动态分配和释放内存。
- 当我们有一个指向结构体或联合体的指针时,可以使用箭头运算符来访问该指针指向的结构体或联合体的成员。例如:
struct Person {
char name[20];
int age;
};
struct Person *ptr;
ptr = &p;
ptr->age = 25;
需要注意
- 点运算符只能用于结构体或联合体变量,而箭头运算符只能用于指向结构体或联合体的指针。
- 点运算符和箭头运算符都是从左到右结合的。
- 点运算符和箭头运算符的优先级高于其他大多数运算符。
实际例子
- 例如,我们可以定义一个结构体表示学生信息,然后使用点和箭头运算符来访问学生的姓名和年龄:
#include <stdio.h>
struct Student {
char name[20];
int age;
};
int main() {
struct Student s;
struct Student *ptr;
// 使用点运算符访问结构体变量的成员
s.age = 18;
printf("Student's age: %d\n", s.age);
// 使用箭头运算符访问指针指向的结构体的成员
ptr = &s;
ptr->age = 20;
printf("Student's age: %d\n", ptr->age);
return 0;
}
输出:
Student's age: 18
Student's age: 20