1. 結構體的sizeof
題目:
sturct aa
{
in num;
char name[10];
};
struct bb
{
int a;
float b;
struct aa c;
};
struct bb a;
計算 sizeof(a) 的值
----------------------
計算過程:
結構體a為bb類型,計算sizeof(a),就是將bb類型中,所有的成員的sizeof求總和。如果有數組,則乘上數組的長度。
所以
1. bb 中a的長度 2(int);
2. bb 中b的長度 4(float);
3. bb 中的c又為結構體,其類型為aa. 其長度為:
num的長度 2(int)
name的長度 為 1 * 10 = 10 (char長度為1)
所以總長度為 2 + 4 + 2 + 10 = 18. 即sizeof(a) =18
==========================================================================
2. 數組和指針
double a;
double *b;
double c[5];
char* pt[3];
char pq[3];
分別計算 a, b , c, pt, pq 的 sizeof
解答:
size(a) = 8;
size(b), 為求指針的sizeof,永遠為2;
size(c), 8 * 5 = 40;
size(pt), 首先pt為一個數組,長度為3。並且里面的元素都是指向char的指針。
所以sizeof(pt) = 3 * 2 = 6
sizeof(pq), = 3