#include <stdio.h>

int main()
{
/***************************************************
*
* 结构体内存分析(注意结构体里面定义成员结束后要使用分号):
* struct Date
* {
* int year;
* int month;
* int day;
* };
* struct Student
* {
* int age;
* char sex;
* };
* struct Stu
* {
* int age;
* char a;
* char b;
* char c;
* char d;
* };
* 理论上:结构体所占用的存储空间是各个成员变量所占的存储空间之和。
* 但是由于性能等原因分配内存是按照补齐算法进行分配。
* 补齐算法(对齐算法):结构体所占用的存储空间,必须是所有成员中占用存储空间最大的成员的倍数
* 结构体成员内存分配:分配内存是按照高位寻址,但是结构体分配内存时,把低位内存分配给最先定义的变量
* 注意:
* 1.定义结构体类型(并不会分配存储空间)
* 2.定义结构体变量(真正分配存储空间)
*
****************************************************/
struct Date
{
int year;
int month;
int day;
};
printf("Date类型占用的存储空间是:%d\n", sizeof(struct Date));
struct Student
{
int age;
char sex;
};
printf("Student类型占用的存储空间是:%d\n", sizeof(struct Student));
struct Stu
{
int age;
char a;
char b;
char d;
};
printf("Stu类型占用的存储空间是:%d\n", sizeof(struct Stu));
struct St
{
int age;
char a;
char b;
char d;
};
printf("St类型占用的存储空间是:%d\n", sizeof(struct St));
struct Date date = {, , };
printf("date变量的地址是:%p\n", &date);
printf("year变量的地址是:%p\n", &date.year);
printf("month变量的地址是:%p\n", &date.month);
printf("day变量的地址是:%p\n", &date.day);
return ;
}
Date类型占用的存储空间是:
Student类型占用的存储空间是:
Stu类型占用的存储空间是:
St类型占用的存储空间是:
date变量的地址是:0022fee4
year变量的地址是:0022fee4
month变量的地址是:0022fee8
day变量的地址是:0022feec

最新文章

  1. jquery的几个常用方法
  2. 海康威视 NET_DVR_FindFile NET_DVR_PlayBackByTime 尝试读取或写入受保护的内存,这通常指示其他内存已损坏
  3. 利用PS自动切图、支持svg且支持icoMoon——再也不用四处去转格式了
  4. 全面认识.NET框架(一)
  5. 264. Ugly Number II
  6. C++ Socket编程步骤 【转】
  7. Mobile Assistant
  8. 设置ORACLE数据库游标大小
  9. oracle备份恢复之rman恢复到异机
  10. Sublime Text 2/3如何支持中文GBK编码
  11. Flashback Drop实例操作
  12. VC多线程编程
  13. 活动倒计时-兼容ios
  14. ASP.NET 设计模式:设计模式和原则简述
  15. memcached源码剖析——流程图
  16. 最大堆(Java数组实现)
  17. 网络I/O中的同步、异步、阻塞和非阻塞概念
  18. 201771010118 马昕璐《面向对象程序设计java》第十二周学习总结
  19. HTML5:离线存储
  20. spring 整合junit进行测试

热门文章

  1. python-request模块--安装
  2. Python-02 生成器表达式,列表推导式
  3. pytest-调整测试用例的执行顺序
  4. linux 下新建文件自动加锁的解决办法
  5. 灯泡编程题-java
  6. ElasticSearch中分词器组件配置详解
  7. 56. Map(双列集合)
  8. React 组件间传值
  9. springCloud数据
  10. SSM框架整合依赖