c中的数据类型

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

/*作者:陈亮

日期:2004-45-25

*/

(注:)以下内容都是说在32位的操作系统下的

C的常用数据类型:

一、首先要搞清的基本问题:

1.在计算机中内存的基本单位是byte,这就意谓着C中所有的数据类型也是以byte为基本单位的.

2.1 byte(字节) = 8 bit(位); 1kb(千字节) = 1024 byte(字节).

3.INTER的内存是以4kb边界对齐的.(一页内存).

4.计算机中所有的东西都是以二进制来进行存储的.

如果编程中遇到什么很怪的问题,不妨试试从以上的角度来考虑一下。

二、基本数据类型

char 占用内存1byte

int占用内存4byte

short 占用内存2byte

long 占用内存4byte

float 占用内存4byte

double 占用内存8byte

三、指针类型

1.指针类型只能存放地址(我觉得这是理解指针的最重要方面)。

2.不论什么指针类型都占用4byte的内存.(也就是说它可以指向的最大内存为4G)

3.所以任何的指针类型都可以进行相互转换.

4.那么指针类型的类型又有什么作用呢?它的作用只是说明此指针指向地址的内容的类型。比如:

(1)int *p; 那么p++就会加4(看二的int). 当用*p的时候,它会读所指向地址的连续4个字节

(2)char *p; 那么p++就会加1(看二的char).当用*p的时候,它会读所指向地址的1个字节

(3)而像(int*)p这样的转换的意思也只是将p所指向地址的内容的类型改变为int.这样它在p++时就会加4

,当用*p时它就会读所指向地址的连续4个字节.

四、结构体

struct mytest{

int i;

char c;

};

sizeof(struct mytest) = 8;

为什么会这样呢?因为要以4byte过界对齐(这样在CPU取地址时速度会快很多)。

所以在使用sizeof(结构体)要特别小心,要想想是不是自己想要的结果。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航