資料結構的位元組對齊
{
char name[5];
int num;
short score;
}
|char|char|char|char|
|char|----|----|----|
|--------int--------|
|--short--|---------|
======================
struct student
{
int num;
char name[5];
short score;
}
|--------int--------|
|char|char|char|char|
|char|----|--short--|
=======================
struct test1
{
int a;
int b[4];
}
|--------int--------|
|--------int--------|
|--------int--------|
|--------int--------|
|--------int--------|
=======================
struct test2
{
char a;
int b;
double c;
bool d;
}
|char|----|----|----|
|--------int--------|
|--------ddd--------|
|--------ddd--------|
|bool|----|----|----|
========================
struct test3
{
char a;
long b;
static long c; //靜態變數
}
sizeof(test3) =
sizeof(a) + sizeof(b) = 8
sizeof計算的是在棧中分配的空間的大小,而static變數是存放在全域性資料區中的,固不計算在內。
==================
union mm
{
char a;
int b[5];
double c;
int d[3];
}
==================
#include <stdio.h>
#pragma pack()
struct student
{
char name[5];
int num;
short score;
}
|char|char|
|char|char|
|char|----|
|---int---|
|---int---|
|--short--|
優點:
能夠更充分的利用儲存空間
缺點:
降低計算機讀資料的速度,是一種以時間換空間的方式