Chinaunix首页 | 论坛 | 博客
  • 博客访问: 386959
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-03 18:24
文章分类

全部博文(75)

文章存档

2019年(1)

2018年(20)

2017年(14)

2016年(10)

2015年(30)

分类: LINUX

2018-04-15 19:25:36

关于结构体所占用的长度,有两个原则:

1、各成员变量存放的起始地址相对于结构体的起始地址的偏移量必须为该变量的类型所占 用字节的倍数。

2、结构体的大小必须为成员中最大字节的整数倍

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. struct a{
  4.     int a;
  5.     char b;
  6.     int c;
  7. };

  8. struct b{
  9.     char *a;
  10.     short b;
  11.     char c;
  12.     int d;
  13.     char e;
  14. };

  15. int main(void)
  16. {
  17.     struct a a;
  18.     struct b b;
  19.     printf("a:%p b:%p c:%p sizeof(struct a):%d\n", &a.a, &a.b, &a.c, sizeof(struct a));
  20.     printf("a:%p b:%p c:%p d:%p e:%p sizeof(struct b):%d\n", &b.a, &b.b, &b.c, &b.d, &b.e, sizeof(struct b));
  21.     return 0;


执行结果

a:0xbfe5f6b0 b:0xbfe5f6b4 c:0xbfe5f6b8 sizeof(struct a):12

a:0xbfe5f6bc b:0xbfe5f6c0 c:0xbfe5f6c2 d:0xbfe5f6c4 e:0xbfe5f6c8 sizeof(struct b):16


阅读(4193) | 评论(0) | 转发(0) |
0

上一篇:链表

下一篇:ELF文件头部分析

给主人留下些什么吧!~~