学习c语言数据结构时不知道为什么有时候用->有时候却用 .

为什么这样定义时可以用 L.data[1];

img

为什么换一种存储方式定义就要使用L->data

img

我是这么理解的:
如果用typdef 定义结构,结构变量访问结构里的成员用点号. ;
如果是定义一个结构指针(带星号),就用->这种访问方式。
下面是一个简单的例子:

#include <stdio.h>

typedef struct message {
    char name[25];
    int age;
}message ,*pmessage;

int main(){
    message a = {"张三",25};
    pmessage pa = &a;
    printf("结构变量访问结构成员:%s %d\n",a.name,a.age);
    printf("结构指针访问结构成员:%s %d\n",pa->name,pa->age);
    
    return 0;
} 

引用类成员就用.
引用指针类成员用->,简单点就是带*的用->
不记得就试试,如果用.或者->会有自动补全出现

当以“指向某块内存的地址”的指针变量来参考内存中的成员时用->进行结构成员寻址。采用该块内存头地址直接寻址时可以用.操作。个人理解,望指正