文章程式碼顯示

2018年2月14日 星期三

《筆記》C語言 - 09_1 :指標結構

指標結構

#include "stdio.h"

struct student{
      char name[8];
      int student_id;
      int chinese;
      int english;
      int math;
     };

int main() {

    // 宣告結構變數 Evan
    struct student Evan = { "Evan" , 1, 30, 55, 80 };

    // 法一:結構變量.成員名稱
    printf("math = %d\n", Evan.math);

    // 宣告一個指標變數 EvanPtr,指向 struct student 型別
    // 將其初始化,指向(結構)變數 Evan
    struct student* EvanPtr = &Evan;

    // 法二:(*指標變數名稱).成員名稱
    printf("math = %d\n", (*EvanPtr).math);

    // 法三:指標變數名稱->成員名稱 (常用)
    printf("math = %d\n", EvanPtr->math);
}



我特地將 指標結構 獨立出來,因為它實在是有點讓人眼花的東西

指標也可以指向一個結構,只要宣告了一個指向結構型別的指標就可以了。

首先在第 13 行到第 17 行我們一樣宣告一個結構變數,並且用上一章談過的方法來存取結構成員

接著在第 20 行定義一個指向 struct student 型別的指標,名為 EvanPtr 
並且給予初始値讓它指向(結構)變數 Evan

這時若我們要利用這個指標來進行取値的話,就必須使用 *(米字號) 配合指標

因為 EvanPtr 裡面已經存放了結構 Evan 的位址,所以我們用 *(米字號) 來通往結構 Evan 。並且使用 "." 對結構內的成員進行存取

注意 : 此處的括號是不可被省略的

因為法二這樣的使用結構指標變數間接存取指標成員的方法有點複雜,又是括弧又是米號又是點的,所以 C 語言支持更簡潔的方法。就是使用箭號運算子 (->) 。

箭號運算子的左方必須是一個存有結構體位址的指標變數,右方則是該結構體內的成員變數名稱

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引