計算結構體 陣列 指標的sizeof

2022-03-22 00:08:54 字數 733 閱讀 5261

1. 結構體的sizeof

題目:sturct aa

;struct bb

;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

陣列指標 結構體指標

指向指標結構體 include include int main struct student stu 1 定義struct student型別的變數stu1 struct student p 定義指向struct student型別資料的指標變數p p stu 1 p指向stu1 stu 1.nu...

結構體指標陣列

struct h a 100 b,c 3 d a是乙個結構體陣列,已經有100個節點了。不需要再分配空間了。b是乙個結構體變數,也已經有空間了,就和int b 已經有空間了一樣。c是乙個指標陣列,c也已經有空間了,有3個元素,但是這三個元素是還沒有分配空間的指標,所以要用malloc分別為他們分配記...

結構體 指標 陣列

若我們用 0x9999 來標記記憶體位址,則 0x9999 表示該位址記憶體中儲存的數值 變數int a a 0x9999 1 a 0x9999 指標int a a 0x8888 0x9999 a 0x8888 0x9999 1 a 0x8888 結構體變數 struct mystruct s s ...