在C語言中,int ,char 等幾種資料型別所佔用的空間
阿新 • • 發佈:2019-01-02
在32位處理器中,
int a; sizeof(a)=4;
char a; sizeof(a)=1;
float a; sizeof(a)=4;
double a; sizeof(a)=8;
long a; sizeof(a)=4;
long int a; sizeof(a)=4;
short a; sizeof(a)=2;
在使用者自己構造的資料型別陣列,結構體,聯合體中,
陣列:
int a[]={20,2,10}; sizeof(a)=12;
double a[]={20,2,10}; sizeof(a)=24;
結構體:
結構體變數所佔儲存空間的大小是所有成員之和,但是當考慮對齊方式時,結構體變數所佔儲存空間的大小不是所有成員之和
1、
struct a
{
int z; //4byte
};
sizeof(struct a)=4;
2、
struct a
{
int z; //4byte
char c; //4byte
};
sizeof(struct a)=8;
3、
struct a
{
char c; //1byte
};
sizeof(struct a)=1;
4、//這個例子便涉及到了位元組對齊問題
struct a
{
int z; //4byte
char c; //4byte
double v; //8byte
};
sizeof(struct a)=16;
聯合體:
聯合體所佔儲存空間大小取決於聯合體中最大資料型別所佔的空間的大小
union A
{
int a; //4byte
float b; //4byte
double c; //8byte
};
sizeof(union A)=8;