CSDN博客

img clzzcl

c中的数据类型

发表于2004/4/26 11:51:00  950人阅读

/*作者:陈亮
  日期: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(结构体)要特别小心,要想想是不是自己想要的结果。
0 0

相关博文

我的热门文章

img
取 消
img