7 結構體之結構體陣列

2021-09-12 16:34:14 字數 1195 閱讀 4260

結構體這塊本來學著沒有什麼問題的,但是,有時候的學習不知道怎麼的,可能是課程進度有點快,會讓自己把前面的知識點與現學的聯絡起來,從而使自己迷惑起來。好了,先說問題:在前面的指標的學習中,我一直過於執著於——*p是以p的值為位址所指向的值,並且*p為乙個具體的數值。以至於在學到結構體陣列時,比如:parr為乙個結構體陣列,parr[0].age等價於(*parr).age,我一時腦迴路不夠用了,困惑於*p是乙個值,卻忘記了結構指標變數一般形式為:

struct 結構體名 *結構體指標變數名,struct student *parr = &stu; //假設事先定義了 struct student stu;

所以*parr實則等價於結構體變數boy,想到這裡,突然明白自己糾結的(*parr).age其實就是相當於stu.age。(注意(*parr).age這裡的括號不能省,因為"."的運算子優先於"*")有時候理解了後有一種頓悟的感覺,想及時用語言表達出來卻也與心裡所想有所差距。只可意會不可言傳吧,23333~但是說白了也是自己沒有徹底的掌握好。

總結一下結構體指標:

結構體指標就是指向結構體變數的指標;

如果乙個指標變數中儲存了結構體變數的首位址,那麼這個指標變數就指向該結構體變數.

通過結構體指標即可訪問該結構體變數,這與陣列指標和函式指標的情況是相同的

結構指標變數說明的一般形式為:struct 結構體名 *結構體指標變數名,例如:struct student *p = &sut; //假設事先定義了 struct student stu;

結構體指標的應用,如果p指向乙個結構體變數stu,則以下3種用法等價:

注意:「->」 稱為指向,運算子*p等價於結構體變數,所以對於引用結構體變數中的成員用"stu.num = 101;

(*p).num = 101"點引用,對於結構體指標去引用裡面的成員用: p->num = 101;

看下面一段**:

#include #include struct student

;int main(void)

return 0;

}

在上面的**中, &parr[i].age等價於&(*(parr+i)).age等價於&(parr+i)->age,三者在scanf函式中可以互換使用。

結構體 結構體陣列

void test 函式遞迴呼叫 允許函式體裡再次呼叫函式本身 使用遞迴一定要有出口 long fact int n return n fact n 1 定義乙個新的資料型別 struct mypoint 結構體型別所占用的記憶體空間是最大資料型別的整數倍。因為結構體型別的變數在分配記憶體時有記憶體...

結構體 結構體陣列

struct 結構體型別名 型別名 成員名 型別名 成員名 先宣告結構體型別,再定義結構體變數名 宣告結構體型別,不分配空間 定義結構體型別變數,就要分配記憶體空間 作 者 hh 完成日期 2018年8月15日 版本號 v1.0 問題描述 結構體巢狀 賦值 輸出 輸入描述 程式輸出 include ...

結構體型別 結構體變數 結構體陣列 結構體指標

問題1 一元錢換為1 2 5分的硬幣,有多少種兌換方?本題要點分析及參 對各種可能情況進行一一測試。這是實現迴圈的一種方式 窮舉法 但實際上只有只有餘額才能兌換成其它面值的硬幣 main 注意換行的控制和每列的對齊 問題3 某鐵路線上有10個站,需要準備多少種客票?main b a 0 p prin...