台大資訊工程學系 資訊系統訓練班 第119期 吳晉賢 C 程式設計 台大資訊工程學系 資訊系統訓練班 第119期 吳晉賢
補充:資料型態的轉換 看講義.
課程大綱 C語言簡介 基本資料型態, 變數, 基本輸入輸出 控制敘述- 選擇控制與重覆控制 陣列 函式 指標 字元與字串 結構 檔案處理
結構 (structure) 結構能夠結合數個彼此相關的變數在一個名稱之下, 並可包含許多不同資料型態的變數. 和結構相比, 陣列也只能包含相同資料型態的元素. struct 結構型態 { 資料型態 變數1; 資料型態 變數2; ………………….. 資料型態 變數3; };
結構 (structure) struct student { char name[20]; int number; } kant; struct開始了一個結構的定義, student稱為該結構的標籤(struct tag), struct student可以用來定義此結構型態的變數, 每一個結構定義必須以分號作為結束.
成員的引用 結構中的成員可以透過點運算符號 . 進行存取. 例子1: 建立一個存放學生資料的結構. 例子2: 一開始就給結構初始值. 例子3: 輸入某學生的出生日期, 姓名及學號.
結構陣列 利用結構可以存放個人的許多資料, 若宣告成陣列的話,則可以存放一群人的資料. struct { char name[20]; int num; } class[40]; class[0].name : 第一個成員的name元素 class[0].num : 第一個成員的num元素 …..以此類推
例子: 輸入三個學生的學號,姓名及成績並列印出來.
巢狀結構 當必須要用到結構中的成員也是結構時, 可以用巢狀結構來處理. 例子:
結構與函數 當函數的參數的型式為結構時,將結構型態傳給函數的方式將和一般的資料型態相同. 例子1: 個別傳送結構成員 例子2: 整個結構傳送 例子3: 輸入5個學生的資料,並輸出
結構與指標 同時使用指標與結構, 可以享受到指標帶來的便利.這裡會談到指標指向結構變數的指標. struct student { char name[20]; int num; }; struct student *stud;
結構與指標 若要存取結構指標變數的成員, 必須使用下列的方法: student->name; 或 (*student).name;
例子: 輸入一個學生的資料, 並且將他輸出.
聯合 (union) 聯合與結構相當類似,兩者之間的差異在於結構中的資料型態必須佔用不同的記憶體空間,而聯合可以使不同的資料型態佔用相同的記憶體空間. 聯合變數的長度是其中的最大值. union { int one; float two; } num;
例子: 利用sizeof()比較結構和聯合在記憶體中所佔空間的差異. 輸入一個員工的加班時數及正常上班時數,並計算出該員工薪資.
練習 建立一個員工結構, 裡面有 name, age, address, salary, phone的資料結構. 由使用者輸入5個員工資料.