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

什么网站可以做2.5D场景做的网站怎么上传图片

什么网站可以做2.5D场景,做的网站怎么上传图片,丽水市城乡建设局网站,在线免费crm黑白配原文链接#xff1a;sizeof()计算结构体的大小_海月汐辰-CSDN博客_结构体的sizeof怎么计算 简要说明#xff1a;结构体成员按照定义时的顺序依次存储在连续的内存空间#xff0c;但是结构体的大小并不是简单的把所有成员大小相加#xff0c;而是遵循一定的规则#xff0c…原文链接sizeof()计算结构体的大小_海月汐辰-CSDN博客_结构体的sizeof怎么计算 简要说明结构体成员按照定义时的顺序依次存储在连续的内存空间但是结构体的大小并不是简单的把所有成员大小相加而是遵循一定的规则需要考虑到系统在存储结构体变量时的地址对齐问题。 一、没有成员的结构体占用的空间是多少个字节 答案是1个字节。 这就是实例化的原因空类同样可以被实例化每个实例在内存中都有一个独一无二的地址为了达到这个目的编译器往往会给一个空类或空结构体C中结构体也可看为类隐含的加一个字节这样空类或空结构体在实例化后在内存得到了独一无二的地址所以空类所占的内存大小是1个字节。 二、首先介绍一个相关的概念——偏移量 struct stru           {                       int a;  //start address is 0                    char b;  //start address is 4                    int c;  //start address is 8          }; 偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小。显然结构体变量中第一个成员的地址就是结构体变量的首地址。比如上面的结构体第一个成员a的偏移量为0。第二个成员b的偏移量是第一个成员的偏移量加上第一个成员的大小04,其值为4第三个成员c的偏移量是第二个成员的偏移量应该是加上第二个成员的大小41。 三、在实际中存储变量时地址要求对齐编译器在编译程序时会遵循两条原则 1结构体变量中成员的偏移量必须是成员大小的整数倍0被认为是任何数的整数倍  2结构体大小必须是所有成员大小的整数倍也即所有成员大小的公倍数。 例子1 struct stru1   {        int a;  //start address is 0      char b;  //start address is 4      int c;  //start address is 8 }; PS:用sizeof求该结构体的大小发现值为12。int占4个字节char占1个字节结果应该是9个字节才对啊为什么呢这个例子中前两个成员的偏移量都满足要求但第三个成员的偏移量为5并不是自身(int)大小的整数倍。编译器在处理时会在第二个成员后面补上3个空字节使得第三个成员的偏移量变成8。结构体大小等于最后一个成员的偏移量加上其大小上面的例子中计算出来的大小为12满足要求。 例子2 struct stru2   {         int i;  //start address is 0       short m;  //start address is 4 }; PS成员i的偏移量为0成员m的偏移量为4都不需要调整。但计算出来的大小为6显然不是成员m大小的整数倍。因此编译器会在成员m后面补上2个字节使得结构体的大小变成8从而满足第二个要求。 例子3、4 struct stru3   {           char i;  //start address is 0         int m;   //start address is 4        char n;  //start address is 8 };   struct stru4   {          char i;  //start address is 0        char n;  //start address is 1        int m;  //start address is 4  };  虽然结构体stru3和stru4中成员都一样但sizeof(struct stru3)的值为12而sizeof(struct stru4)的值为8。 由此可见结构体类型需要考虑到字节对齐的情况不同的顺序会影响结构体的大小。 四、 对于嵌套的结构体需要将其展开。对结构体求sizeof时上述两种原则变为        1展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。 2结构体大小必须是所有成员大小的整数倍这里所有成员计算的是展开后的成员而不是将嵌套的结构体当做一个整体。 例子1 struct stru5   {         short i;         struct          {              char c;              int j;         } tt;          int k;   }; 结构体stru5的成员tt.c的偏移量应该是4而不是2。整个结构体大小应该是16。 例子2 struct stru6   {         char i;         struct          {              char c;              int j;         } tt;          char a;         char b;         char d;         char e;         int f;   }; 结构体tt单独计算占用空间为8而stru6的sizeof则是20不是8的整数倍这说明在计算sizeof(stru6)时将嵌套的结构体ss展开了这样stu6中最大的成员为tt.j占用4个字节20为4的整数倍。如果将tt当做一个整体结果应该是24了。 五另一个特殊的例子是结构体中包含数组其sizeof应当和处理嵌套结构体一样将其展开如下例子 struct array   {       float f;       char p;       int  arr[3];   }; 其值为20。float占4个字节到char p时偏移量为4p占一个字节到int arr[3]时偏移量为5扩展为int的整数倍而非int arr[3]的整数倍这样偏移量变为8而不是12。结果是81220是最大成员float或int的大小的整数倍。 测试环境vc6.0 测试代码   //#ifndef __cplusplus//#endif#include iostream #include stdio.h #include stdlib.h using namespace std;struct stru_empty {}; struct stru1 { int a; //start address is 0char b; //start address is 4int c; //start address is 8 }; struct stru2 { int i; //start address is 0short m; //start address is 4 }; struct stru3 { char i; //start address is 0 int m; //start address is 4char n; //start address is 8 }; struct stru4 { char i; //start address is 0char n; //start address is 1int m; //start address is 4};struct stru5 { short i; struct { char c; int j; } ss; int k; }; struct stru6 { char i; struct { char c; int j; } tt; char a; char b; char d; char e; int f; }; struct stru7 { char i; struct { char c; //int j; } tt; char a; char b; char d; char e; int f; }; struct array { float f; char p; int arr[3]; }; int main() { struct stru6 st6;struct stru7 st7;struct array ar;printf(sizof(char)%d \n,sizeof(char));printf(sizof(int)%d \n,sizeof(int));printf(sizof(short int)%d \n,sizeof(short int));printf(sizof(long int)%d \n,sizeof(long int));printf(sizof(long)%d \n,sizeof(long));printf(sizof(float)%d \n\n,sizeof(float));printf(sizof(stru_empty)%d \n,sizeof(stru_empty));printf(sizof(stru1)%d \n\n,sizeof(stru1));printf(sizof(stru2)%d \n\n,sizeof(stru2));printf(sizof(stru3)%d \n\n,sizeof(stru3));printf(sizof(stru4)%d \n\n,sizeof(stru4));printf(sizof(stru5)%d \n\n,sizeof(stru5));printf(sizof(stru6)%d \n,sizeof(stru6)); printf(sizof(stru6.tt)%d \n,sizeof(st6.tt));printf(the address of stru6.i%d \n,st6.i);printf(the address of stru6.a%d \n\n,st6.a);printf(sizof(stru7)%d \n,sizeof(stru7));printf(sizof(stru7)%d \n,sizeof(st7.tt));printf(the address of stru7.i%d \n,st7.i);printf(the address of stru7.a%d \n\n,st7.a);printf(sizof(ar)%d \n,sizeof(ar));printf(sizof(ar.f)%d \n,sizeof(ar.f));printf(sizof(ar.arr)%d \n,sizeof(ar.arr));return 0; } 运行结果
http://wiki.neutronadmin.com/news/187135/

相关文章:

  • 做药公司的网站前置审批石家庄seo排名公司
  • 外贸零售网站建设一个数据库怎么做二个网站
  • 建公司网站建设明细报价表win10怎么删除2345网址导航
  • 做设计的素材网站263企业邮箱入口登录找回密码
  • 用手机制作网站的软件广东省建设执业注册中心网站
  • 农场游戏系统开发 网站建设推广深圳福田园岭网站建设
  • 应聘网站开发题目有趣的网站名
  • phpstudy2016快速搭建网站兰州网站推广建设公司
  • 公司网站建设请示新手做电商如何起步
  • 河北做网站公司那家好投资加盟项目
  • 选择做印象绍兴网站的原因济南seo关键词排名工具
  • 哪个网站做清洁的活多wordpress 离线更新
  • 做公司网站哪家 上海电商网站设计系列
  • 东莞做网站 9353百度外链查询工具
  • 疑问句做网站标题建站平台企业排名
  • 智能建站系统cms淘宝运营培训
  • 网站开发的工作职责专业沈阳网站制作
  • 做外贸一般上什么网站代理平台推荐
  • 哈尔滨建工建设集团网站运营seo实训总结
  • 与别人相比自己网站建设优势做网站的接口是意思
  • 南皮 网站服务器维护公告
  • jq动画效果网站重庆哪些网站推广公司
  • 挂网站需要什么服务器网站404怎么做视频教程
  • 蓝色系网站首页学做视频的网站有哪些内容
  • 可以自己做课程的网站东营百姓网免费发布信息网
  • 企业网站排名运营西安网站托管维护
  • 东莞网站建站推广做网站公众号要多少钱
  • 河北住房和城乡建设厅官方网站新河seo怎么做整站排名
  • 南通市住房和建设局网站好用的免费crm
  • 怎么查看网站哪个公司做的docker wordpress v