C语言结构体大小
来源:互联网 发布:linux 如何解压缩war 编辑:程序博客网 时间:2024/06/16 03:34
吐血总结,在两次笔试题中都遇到,特总结如下:
P表示偏移量,D表示大小,sum为总大小;
规则1:P(i)能整除以D(i);
规则2:sum能整除以每个D(i);
规则3:sum=last_P(i)+last_D(I);总大小等于最后一个成员的偏移量加上最后一个成员的大小
struct stu1 ////12
{
int i;
char c;
int j;
};
struct stu2 ////8
{
int k;
short t;
};
struct stu3 ////12
{
char c1;
int i;
char c2;
}
struct stu4 ////8
{
char c1;
char c2;
int i;
}
如果结构体中的成员又是另外一种结构体类型时应该怎么计算呢?只需把其展开即可。但有一点需要注意,展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。看下面的例子:
struct stu5 ////16
{
short i;
struct
{
char c;
int j;
} ss;
int k;
}
结构体stu5的成员ss.c的偏移量应该是4,而不是2。整个结构体大小应该是16。
// Endian_1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; typedef struct node1{int a[100];char b;}sa;typedef struct node2{int a;char b;}sb;typedef struct node3{int a;double b;}sc;typedef struct node4{long long b; //long long是8B,long是4Bchar a;}sd;typedef struct node5{unsigned short s1;///unsigned short 和short都是2Bunsigned short s2;}se;typedef struct node6{unsigned short s1;int i; unsigned short s2; }sf;typedef struct node7{unsigned short s1;unsigned short s2; int i; ///}sg;typedef struct node8{int i;char c;int j;}sh;struct stu5{short i;struct {char c;int j;} ss; int k;};int _tmain(int argc, _TCHAR* argv[]){cout<<sizeof(sa)<<endl;///404cout<<sizeof(sb)<<endl;///8cout<<sizeof(sc)<<endl;///16cout<<sizeof(sd)<<endl;///16cout<<sizeof(se)<<endl;///4cout<<sizeof(sf)<<endl;///12cout<<sizeof(sg)<<endl;///8cout<<sizeof(sh)<<endl;//12cout<<sizeof(stu5)<<endl;//16system("pause");return 0;}环境: win7 64,vs2010
- C语言--结构体大小
- C语言结构体大小
- c语言结构体大小
- C语言中结构体大小
- c语言 sizeof()求结构体大小
- 关于C语言结构体大小
- C语言中结构体的大小
- C语言结构体大小计算
- C语言中结构体大小计算即存储分配
- C语言中结构体大小计算即存储分配
- C语言_空结构体的大小
- C语言中如何计算结构体的大小
- C语言数据类型大小和结构体中变量…
- C语言数据类型大小和结构体中变量…
- C语言中关于结构体大小的问题
- 面试珠玑 C语言sizeof求结构体的大小
- 【c语言】结构体大小计算的例子
- C语言sizeof求结构体大小问题汇总
- SSH项目中数据库操作使用聚合函数
- poj 1023 The Fun Number System 整数的表示
- Linux命令行出现出现there are stopped jobs问题
- 项目开发环境搭建手记(5.Jenkins搭建)
- 我的第一份工作
- C语言结构体大小
- Linux -- tar命令
- 循环break的复习
- 使用TabPageIndicator创建tab页面
- 调试瑞萨R7F0C002L芯片总结1————编译器安装
- 用 Redis 轻松实现秒杀系统的构思
- 实现多路网络摄像头连接DM8168
- TensorFlow Introduction 动画
- Android AudioTrack详解