当前位置: 首页 > news >正文

C语言小记:结构体及其在内存中的储存形式

C语言小记:结构体及其在内存中的储存形式

1.结构体

  • 结构体的作用:自定义一个包含多种不同数据类型的变量。

  • 语法:

    struct 结构体名称
    {结构体成员1;结构体成员2;结构体成员3;...
    }

     

  • 定义结构体变量:

    include<stdio.h>struct RCC//声明一个结构体类型RCC,其中有两个char类型变量,一个int类型变量。
    {char cr;char cfgr;int cf;
    };int main(void)
    {struct RCC rcc;//定义一个结构体变量rcc.return 0;
    }

2.结构体变量的在内存中的存储形式:

首先我们来运行一段代码

#include<stdio.h>int main(void)
{struct RCC{char cr;char cfgr;int cf;};struct RCC rcc = {'q','w',48};printf("  cr的地址:%p\n",&rcc.cr);printf("cfgr的地址:%p\n",&rcc.cfgr);printf("  cf的地址:%p\n",&rcc.cf);return 0; } 

运行结果

 观察运行发现rcc.cr的地址再000000000062FE10,rcc.cfgr的地址在000000000062FE11,rcc.cf的地址在000000000062FE14。这是由于C语言在储存结构体中不同类型的数据结构时,会以4个字节为一个单元进行存储,当四个字节容纳不下下一个类型的数据时,C语言编译器会将这个单元中没有存放数据的剩余内存空下,转而存放在下一个单元中。如图2所示。

图2

所以,为了节省内存空间,在声明结构体时,尽量合理摆放结构体中各个变量标识符的先后顺序,合理利用内存空间。 

3.结构体的地址

结构体变量的地址=结构体第一个成员的地址,如图3

代码:

#include<stdio.h>int main(void)
{struct RCC{char cr;char cfgr;int cf;}rcc = {'q','w',48};printf("   rcc的地址:%p\n",&rcc);printf("rcc.cr的地址:%p\n",&rcc.cr);return 0; }

 

作者声明:文章原创不易,转载引用请声明出处。


http://www.taodudu.cc/news/show-6112625.html

相关文章:

  • 最早的计算工具
  • 有关魅族手机遇到TextView显示异常
  • 解决魅族17横屏全屏会有白边问题
  • php户型图识别,五大指标教你看懂户型图
  • php户型图识别,5分钟教你马上看懂户型图
  • 户型平面原型设计-简介
  • 懂户型图 如何选择好户型
  • php户型图识别,户型图上的那些标注都是啥?看不懂难怪被坑
  • 推荐一款过滤百度广告的神器
  • 保存网页内容 自动过滤广告和网页头尾
  • chrome去广告插件
  • 可以过滤网页中广告的插件Adblock Plus
  • 实验室常见的PFA制品有哪些?这些特氟龙PFA产品你认得全吗?
  • 我對這個世界的認識
  • 使用Typora列表嵌套列表,回车无法返回上一级列表的状态
  • 解决 Jupyter notebook 运行SHELL 命令(!xxx), 出错: OSError: “/bin/bach“ shell not found
  • 解决Tomcat修改server.xml和content.xml后自动还原问题
  • 十分钟文档化你的C++代码——DoxyGen
  • 我都认识
  • 认清自己
  • 大人物只认得大人物……
  • 我的认识
  • 写个神经网络,让她认得我`(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别)
  • 我是这么认为的
  • 我认得embdedding
  • 我觉得,我认为。。。
  • 我认了
  • 视频原理和FFmpeg
  • 这篇文章教给你图片怎么去雾的几个方法
  • 初探视频原理和FFmpeg