结构体指针和结构体变量

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;

  • 17
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值