在C语言中,结构体(struct)是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。以下是“.”和“->”的区别:
1. “.”运算符用于访问结构体变量中的成员,表示结构体变量的成员变量或成员函数。例如:
struct Student {
char name[10];
int age;
};
struct Student s;
s.age = 20;
表示访问结构体变量s中的age成员变量,并将其值设置为20。
2. “->”运算符用于访问结构体指针中的成员,表示结构体指针变量所指向的结构体变量的成员变量或成员函数。例如:
struct Student {
char name[20];
int age;
};
struct Student *p = &s;
p->age = 20;
表示访问结构体指针变量p所指向的结构体变量s中的age成员变量,并将其值设置为20。 需要注意的是,使用“->”运算符时,指针变量必须先指向一个有效的结构体变量,否则会导致程序出错。
由于a->b
的含义是 (*a).b
,所以他们是不同的,不过 ->
可以用 *
和 .
实现。
结构体变量用 . 来访问结构体的成员如下:
#include<stdio.h>
#include <malloc.h>
struct stu{
int age;
stu* next;
};
int main(){
stu s1;
s1.age =20;
return 0;
}
指向结构体的指针用->来访问其指向的结构体的成员如下:
#include<stdio.h>
#include <malloc.h>
struct stu{
int age;
stu* next;
};
int main(){
stu *phead = (stu*)malloc(sizeof(stu));
phead->age=20;
phead->next = NULL;
stu* p = phead;
return 0;
}