結構體如下:
struct student
;1. 結構體的初始化
struct student aa = ;
2. 引用整個結構體
struct student *p = &aa; //p指向aa這個結構體的首位址
3.結構體中,字元陣列的引用
char *q = aa.name; //q指向 "zhang" 。因為 "zhang" 本身已經是字元陣列, 所以在指向他時,不需要再加乙個 「&」
4.結構體中,普通型別的引用
int *r= &aa.num; // r 指向 1001 的位址
char *s= &aa.***; // r 指向 'm' 的位址
5. 因為有了p指向aa, 所以在引用aa的成員時, aa.num 和 p->num是等價的,和 (*p).num也是等價的
即 aa.num , p->num, (*p).num 均指向 name
6.結構體陣列
struct student sru[3] = ,,
}struct struct *p = stu;
如果此時,我們想訪問陣列中第乙個元素的name, 即 "zhang".
有三種方法:
a) 直接訪問陣列stu
stu[0].name;
b) 用指標p訪問陣列stu
因為p已經指向了stu, 所有不能再用"."來訪問了,應該用"->"
p->name;
c) 接b,也可以寫成(*p).name;
以此類推,如果想訪問陣列中第二個元素的name, 即 "peng".
有三種方法:
c) 直接訪問陣列stu
stu[1].name;
d) 用指標p訪問陣列stu
(p+1)->name;
注意,因為+1是乙個四級運算子,所以必須先用括號括起來
e) 接d,也可以寫成(*p).name;
(*(p+1)).name;
結構體成員的引用
有下面幾個結構體 struct 是個結構標籤 struct x struct y 20 z 或者typedef struct 是個型別名 x y 20 z struct complex struct complex comp 結構體成員直接訪問 comp.sa 4 c 結構體成員的間接訪問 當擁有乙...
結構體成員的引用 (箭頭)和 (點)
關於結構體成員的引用有這樣的規律 箭頭 左邊必須為指標 注意其實不是箭頭而是兩個符號 點號 左邊必須為實體。那麼如果乙個結構體指標引用乙個成員,這個成員又是乙個結構體 並且是乙個實體 那麼如果要引用這個成員的成員要怎麼辦呢?經過實驗發現,依然遵循上面的規則即 箭頭左邊必須是指標,實體一定要用點號引用...
結構體中的成員對齊
關於結構體中成員對齊的總結 a.結構體中,結構體成員要對齊到其對齊值倍數的位址上,對齊值為min 成員型別對齊值,編譯器結構成員對齊值b.結構體本身的對齊值為其所有成員中最大的對齊值。c.結構體本身要對齊到其對齊值倍數的位址上。d.結構體中的結構體要對齊到其對齊值倍數的位址上。e.結構體成員在記憶體...