Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1798861
  • 博文数量: 335
  • 博客积分: 4690
  • 博客等级: 上校
  • 技术积分: 4341
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-08 21:38
个人简介

无聊之人--除了技术,还是技术,你懂得

文章分类

全部博文(335)

文章存档

2016年(29)

2015年(18)

2014年(7)

2013年(86)

2012年(90)

2011年(105)

分类: C/C++

2011-08-28 22:17:31

  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #define offset(TYPE,MEMBER) ((int)&((TYPE *)0)->MEMBER)
  5. #define OK 0
  6. # pragma pack(4) //使用和不使用效果相同
  7. using namespace std;
  8. typedef struct student{int id;
  9. char name[10];
  10. int grade;
  11. char address[50];}stu;
  12. int main(int argc, char *argv[])
  13. {
  14. cout<<"求解成员变量相对于结构体的偏移量:"<<endl;cout<<"相对于操作系统,标准整型变量的字节数为:sizeof(int)"<<endl;cout<<sizeof(int)<<endl;
  15. cout<<"offset id \t"<<offset(stu,id)<<endl;
  16. cout<<"offset name \t"<<offset(stu,name)<<endl;
  17. cout<<"offset grade \t"<<offset(stu,grade)<<endl;
  18. cout<<"offset address \t"<<offset(stu,address)<<endl;getchar();
  19. return OK;
  20. }
  21. 求解成员变量相对于结构体的偏移量,默认情况下,结构体按4字节对齐。
  22. 尽管使用预处理内存对齐指令,记下了。
  23. # pragma pack(2) //结果就是按2字节对齐
阅读(2884) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~