char-这个结构体占据多少字节呢 请指教

问题描述

这个结构体占据多少字节呢 请指教
typedef struct _person{

char  firstname;char  lastname;char * title;unsigned int age;char sex;struct spring ls;

}Person;
这个结构体占据多少字节

解决方案

不是简单相加就好了的,要考虑对齐问题,所以与spring结构关系很大,
我用你的这个结构做了一点小实验,结果会根据spring中内置变量的不同而有挺大变化的哦
http://blog.csdn.net/jianjian1992/article/details/46518027

解决方案二:
char是一个,指针是四个。然后就是要看ispring的大小已经对齐。

解决方案三:
12 + ls 个人见解

解决方案四:
(1+1按4字节对齐)4+4+4+(1按4字节对齐)4 = 16+ls的大小

解决方案五:
按照内存地址对齐选择,是4的整数倍,前两个char构成4字节,指针char是地址,4字节,int型4字节,char补齐4字节,spring同样计算方法,所以就是4+4+4+4+spring

解决方案六:
结构体应该是总数相加(char是一个,指针是四个)所以应该是12+spring

解决方案七:
和结构体ls的大小有关,需要根据字对齐原则判断

解决方案八:
spring是个什么结构?

时间: 2024-08-04 03:22:33

char-这个结构体占据多少字节呢 请指教的相关文章

visual c++6.0 结构体占存字节的疑问

问题描述 visual c++6.0 结构体占存字节的疑问 程序1: #include int main(void) { struct stu { double a; int b; }tex; printf("%d %d %d n", sizeof(stu), sizeof(tex.a), sizeof(tex.b) ); return 0; } 结果:16 8 4 //疑问:为什么 sizeof(stu) 不等于 sizeof(tex.a)和 sizeof(tex.b) 的和 12

深入剖析C++中的struct结构体字节对齐_C 语言

什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同.一些平台对某些特定类型的数据只能从某些特定地址开始存取.比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证

在C#里面调用带有回调函数和自定义结构体的DLL的例程

函数 开发环境: WinXP Pro(SP2英文版) + VS.NET 2003中文版接口库版本: CMPP2.0 API第二版(V2.6) 该例程演示了如何在C#里面调用VC6.0开发的带回调函数的API,而且回调函数的参数包含结构体,使用C#的委托和IntPtr方法实现. 由于我使用C#刚两天,这是我写的第一个C#程序,因此例程写的可能有点粗糙,但是编译和运行完全没有问题. CMPP2.0的API封装成了标准C调用的方法,提供以下三个接口,使用的时候只要有CMPPAPI.dll就可以了. #

sizeof(结构体)地址对齐问题

问题描述 sizeof(结构体)地址对齐问题 写出sizeof(struct name2)的结果struct name2{ char str; int num; short x; }写出sizeof(struct name1) 的结果 struct name1{ char str; short x; int num; }地址对齐不太会,求指教! 解决方案 取决于对齐大小,比如缺省4字节对齐struct name2{char str; // 因为num要4字节,str本身1字节,但是为了对齐,所以

C语言结构体的对齐原则

Q:关于结构体的对齐,到底遵循什么原则? A:首先先不讨论结构体按多少字节对齐,先看看只以1字节对齐的情况: #include <stdio.h> #include <string.h> #define PRINT_D(intValue) printf(#intValue" is %d\n", (intValue)); #define OFFSET(struct,member) ((char *)&((struct *)0)->member - (

一道用 sizeof 求结构体所占大小的笔试题?求教

问题描述 一道用 sizeof 求结构体所占大小的笔试题?求教 下列程序,为什么输出的结果是 120? int main(int argc, char* argv[]) { union u_type { int i; double x; float f; }; struct str_type { char str[100]; union u_type u[2]; }; printf("%dn",sizeof(struct str_type)); } 解决方案 首先union u_typ

实例讲解C语言编程中的结构体对齐_C 语言

Q:关于结构体的对齐,到底遵循什么原则? A:首先先不讨论结构体按多少字节对齐,先看看只以1字节对齐的情况: #include <stdio.h> #include <string.h> #define PRINT_D(intValue) printf(#intValue" is %d\n", (intValue)); #define OFFSET(struct,member) ((char *)&((struct *)0)->member - (

C++程序设计-第2周结构体应用

第一部分 程序阅读 下面的程序建立起了如图所示的动态链表.阅读程序,在草稿纸上画出链表建立的过程,借此学会如何建立链表.可以通过单步执行以辅助理解 #include <iostream> using namespace std; struct Student { long num; float score; struct Student *next; }; int main( ) { Student *head=NULL,*p,*q; //下面的程序建立起一个有三个节点的动态链表 for(in

C#中怎么读取Struct(结构体)文件!!!!???大虾帮帮我啊。。。。。

问题描述 做项目需要读取一个.DAT文件,这个文件是别人给的,里面记录了一些调试需要用到的参数,是用结构体(Struct)写成的,用的是C++写的.....现在我拿到了这个.dat文件的结构,里面大致形式为(嵌套的结构体):structA{...structB{....structC{.....}}}好像用C++读取很容易,但我目前的软件都是用C#写的,只能在C#里面读了,这个要怎么读啊?网上找了一些资料,看上去好复杂,哪位大虾能详细的讲一下啊,谢谢!!!!还有,我曾经想过是否可以用C++写一个