今天看了一本书,书上有这么个结构体,
typedef struct address
{
char* name; 4
int* id; //我后加的 4
long int number; 4
char* street; 4
char* town; 4
char state[2]; 2
long zip; 4
}address;
问这个结构体占几个字节。
这里有两个问题:
1. 指针类型占几个字节?答:对于32位机器,占4个字节;对于16位机器,占2个字节。
2. 这个结构体占几个字节?答:看起来是26个字节,其实是28个字节。
原因如下:
1 2 3 4
|---------|--------|--------|--------|
********* ******** ******** ******** char* name占4个字节
|---------|--------|--------|--------|
********* ******** ******** ******** int* id占4个字节
|---------|--------|--------|--------|
********* ******** ******** ******** long int number占4个字节
|---------|--------|--------|--------|
********* ******** ******** ******** char* street占4个字节
|---------|--------|--------|--------|
********* ******** ******** ******** char* town占4个字节
|---------|--------|--------|--------|
********* ******** ____ _____ char state[2]占2个字节
|---------|--------|--------|--------|
********* ******** ******** ******** long zip占4个字节
故共28个字节。
想了解更多,请参看《C++预处理之#progm pack》