1.前言
今天在写题目的时候出现了一处小错误,就是由于结构体指针和结构体变量没有区分清楚,接下来谈一谈这两者的区别;
2.内存空间上面的差别
假设有如下代码:
typedef struct Stu
{
int age;
}stu;
此时定义一个结构体指针 stu *p; 一个结构体变量 stu q;
结构体指针p是指向一个结构体的,这个结构体没有名字,它指向的是一个结构体空间的首地址;如果需要使用这个结构体就必须malloc一个空间出来或者将一个具有空间的结构体的首地址赋予它;
结构体指针p,它本身是一个地址,指向某一块内存空间,如果你不给它分配空间代表这是一个野指针,访问的时候自然会出错了;
结构体变量q,在定义变量的时候,编译器就自动给变量分配了合适的储存空间;
比如 定义一个整形变量,int value;这时编译器就自动根据类型 int分配给value4个字节的空间;(32位下)
3.访问上的差别
结构体指针访问成员变量的操作符是 ‘->’,结构体变量访问成员变量的操作符是‘.’
并且 (*p).age <=> p->age;