C语言结构体(二)

文章目录

前言

一、结构体要注意以下几点

二、结构体的存储

1.结构体整体空间是占用空间最大的成员(的类型)所占字节数的整数倍。

2.结构体的每个成员相对结构体首地址的偏移量(offset)都是最大基本类型成员字节大小的整数倍,如果不是,编译器会自动补齐。

三、结构体初始化

总结

理解结构体大小的计算以及结构体偏移问题是核心,对于有关结构体变量地址的理解如果对指针没有问题的话理解起来还是相对容易的,加油!每一个为梦想而艰辛付出的践行者!



前言

复习C语言结构体,温故而知新!


提示:以下是本篇文章正文内容,下面案例可供参考

一、结构体要注意以下几点

1.只有结构体变量才分配地址,而结构体的定义不分配空间的。

2.结构体变量的声明需要在主函数之上或者主函数中声明,如果在主函数之下会报错。

3.C语言中的结构体不能直接进行强制转换,只有结构体指针才能强制转换。

二、结构体的存储

1.结构体整体空间是占用空间最大的成员(的类型)所占字节数的整数倍。

代码如下(示例):

struct s1
{
    char ch1;
    int i;//{} {}{}{} {}{}{}{} {} {}{}{}
    char ch2;//12
};
struct s2
{
    char ch1;
    char ch2;//{}{} {}{}       {}{}{}{}
    int i;//8
};

2.结构体的每个成员相对结构体首地址的偏移量(offset)都是最大基本类型成员字节大小的整数倍,如果不是,编译器会自动补齐。

2.1 偏移量:指的是结构体变量中成员的地址和结构体变量首地址的差,即偏移的字节数。结构体大小等于最后一个成员的偏移量加上它的大小,第一个成员的偏移量为0。

三、结构体初始化

1.在对结构体变量初始化时,要对结构体成员一 一赋值,不能跳过前面成员变量,而直接给后面成员变量赋值,但是可以只赋值前面几个成员变量,对后面未赋值的成员变量,如果是数值型,则自动赋值为0,对于字符型,会自动赋值为NULL,即'\0';

2.指针作为实参,传递给函数的形参,这时候传递的是结构体的地址,形参所指向的地址是结构体变量的地址,这时候进行修改的话是可以修改的。


总结
理解结构体大小的计算以及结构体偏移问题是核心,对于有关结构体变量地址的理解如果对指针没有问题的话理解起来还是相对容易的,加油!每一个为梦想而艰辛付出的践行者!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星筠君辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值