结构体指针和结构体变量

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;

猜你喜欢

转载自blog.csdn.net/ych9527/article/details/111751485