在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;
}
07-13 19:17