第一章 数据类型
来源:互联网 发布:淘宝买高压气瓶犯法吗 编辑:程序博客网 时间:2024/05/20 22:38
32 位系统上 char 1 byte; Shor 2 byte ; int long float 4 byte ;double 8 byte
一般如上,不同平台可能不一样,具体可以用sizeof求一下。
Siezof在计算变量所占空间大小时,括号可以省略,而计算类型大小时不能省略。
如sizeof(i),sizeof i, sizeof(int) 。错误情况如下sizeof int
int *p=NULL; Sizeof(p)=4 ;sizeof(*p)=4;p是指针,其sizeof为4;*p代表值
Int a[100] ;sizeof(a)=400;sizeof(a[100])=4,sizeof(&a)=400;sizeof(&a[0])=4; 地址为int型,int型的范围和开发环境有关,现在都是32位的,远远超出65535.
Int b[100]
void fun(int b[100]) 数组传递时,传递的是头指针。
{
Sizeof(b)=4
}
Char *q=”ancdedffg”; sizeof(q)=4; sizeof(*q)=1; q是字符指针,*q是第一个字符
char c[]="abdded";sizeof(c)=7 strlen(c)=6; 包括‘\0’.sizeof("abcdefg")=8 。
char x[10]="abcdef";printf("%d",strlen(x));strlen(x)=6 ;printf("%d",sizeof(x));sizeof(x)=10
struct MyStruct
{
char dda; 偏移量为0,满足对齐方式,dda占用1个字节;
double dda1; 下一个可用的地址的偏移量为1,不是sizeof(double)=8
的倍数,需要补足7个字节才能使偏移量变为8(满足对齐
方式),因此VC自动填充7个字节,dda1存放在偏移量为8
的地址上,它占用8个字节。
int type; 下一个可用的地址的偏移量为16,是sizeof(int)=4的倍
数,满足int的对齐方式,所以不需要VC自动填充,type
存放在偏移量为16的地址上,它占用4个字节。
};
所有成员变量都分配了空间,空间总的大小为1+7+8+4=20,不是结构的节边界数(即结构中占用最大空间的类型所占用的字节数sizeof(double)=8)的倍数,所以需要填充4个字节,以满足结构的大小为sizeof(double)=8的倍数。
所以该结构总的大小为:sizeof(MyStruc)为1+7+8+4+4=24。其中总的有7+4=11个字节是VC自动填充的,没有放任何有意义的东西。
struct MyStruct
{
double dda1;
char dda;
int type;
};
sizeof(MyStruc)为8+1+3+4=16。
struct MyStruct
{
static double dda1;
char dda;
int type;
};
Sizeof(MyStruct)=8。因为结构或者类中的静态成员不对结构或者类的大小产生影响,静态变量的存储位置与结构或者类的实例地址无关。
总体上遵循两个原则:
1.整体空间是占用空间最大的成员所占字节数的整数倍
2.数据对其原则。内存按结构成员的先后顺序排列,当排列到该成员变量时,其前面已摆放的空间大小必须是该类型大小的整数倍,如果不够则补齐,以此向后类推。
double *(*a)[3][6]
sizeof(a)=4 ;//a为指针
sizeof(*a)=72 ;//*a为一个有3*6个指针元素的数组
sizeof(**a)=24 ;//**a为一个数组一维的6个指针
sizeof(***a)=4 ;//***a为一维的第一个指针
sizeof(****a)=8 ;//****a为一个double变量
struct s1
{
char a[8];
};
struct s3
{
s1 s;
char a;
};
Sizeof(s3)=9,对齐方式是1.
- 第一章 数据类型
- 第一章:C语言数据类型
- 第一章:C#数据类型
- java 第一章 基本数据类型
- 1.3 - 第一章:PHP基础 - 数据类型
- 第一章:数据类型和运算符
- java基础第一章_数据类型
- JAVA复习笔记--第一章:第二节:数据类型
- 《Visual C# 最佳实践》第一章 程序设计 (二):数据类型
- VBScript学习笔记--第一章.数据类型和操作符
- JAVASE课程 第一章 第二讲JAVA数据类型和运算符
- c#学习 第一章 数据类型,运算符,枚举与结构
- 黑马程序员Java基础第一章----关键字,标识符,数据类型,运算符
- 第一章 变量 数据类型 常用获取元素的方式
- Inside Microsoft SQL Server 2005: T-SQL Programming (数据类型|第一章) 基于CLR的自定义数据类型
- Inside Microsoft SQL Server 2005: T-SQL Programming (数据类型|第一章) XML数据类型
- 第一章>
- 第一章
- 第一章 关键字
- 在JavaScript 调用C++
- 关于linux oss音频应用编程详解,写的挺好的
- 工作随谈之扯淡
- Android 如何使用ant批量打包
- 第一章 数据类型
- Android Application package 'AndroidManifest.xml' must have a minimum of 2 segments.
- http://blog.csdn.net/dm_vincent/article/details/7655764
- 程序员生存定律-选公司前要干的事:分类
- jquery中each用法
- 基于链表的C语言堆内存检测
- 从C调用JavaScript函数代码。
- 检测本机是否登录了指定QQ账号
- 15.1 Reverse Integer