先观察语句1与语句2的区别
struct ListNode{
int val;
struct ListNode *next;
};
struct ListNode* temp; //1
struct ListNode header; //2
语句1中的temp是一个指针,指向某个结构体,只占有一个指针的内存;语句2中的header是一个结构体,占有一整个结构体的内存,header中有数据域与指针域。
temp = &header
该行语句的意思则是将header(结构体)的地址存放到temp(一个指针)中。
我们看到的结构体成员引用方式有以下三种。
(*temp).val //1
temp->val //2
head.val //3
即(这三种都是等价的):
(*指针变量名).成员名
指针变量名->成员名
结构体名.成员变量名