Presentation is loading. Please wait.

Presentation is loading. Please wait.

Struct結構 迴圈 01010 10101 01010 10101 01010 10101.

Similar presentations


Presentation on theme: "Struct結構 迴圈 01010 10101 01010 10101 01010 10101."— Presentation transcript:

1 struct結構 迴圈 01010 10101 01010 10101 01010 10101

2 struct 結構 結合多個相關的變數在一個名稱下,可包含數個不同資料型態的變數 結構是一種使用者自定的型態,可將不同的資料型態串在一起
例如: 學生個人資料,有姓名(字串)、電話(長整數) 、年齡(整數)…等等

3 struct格式 struct 結構型態名稱{ 資料型態 變數名稱; } 變數名稱 ; struct PersonalData {
    資料型態 變數名稱;  } 變數名稱 ; struct PersonalData { char name[14]; long tel; int age; char address[30]; } stu stu; stu.name stu.tel PersonalData name tel age address Kelly newtaipei,,,,,ROC

4 自訂資料結構名稱 欄位 變數名 變數.欄位 str.name=“張三”; 錯! strcpy(目的字串,來源字串)
#include <stdio.h> #include <string.h> void main() { struct Studendata { char name[10]; int age; char address[50]; char interest[11]; } stu; strcpy(stu.name,"張三"); stu.age = 25; strcpy(stu.address, “新北市新莊區復興路1號"); strcpy(stu.interest, "basketball"); printf("The student's name is: %s\n", stu.name); printf("The student's age is: %d\n", stu.age); printf("The student's address is: %s\n", stu.address); printf("The student's interest is: %s\n", stu.interest); } 自訂資料結構名稱 欄位 變數名 變數.欄位 str.name=“張三”; 錯! strcpy(目的字串,來源字串)

5 進階用法

6 struct內包含其他struct struct Detail { int age; char *name; char *address;
}; struct Data { int stuid; struct Detail detail; void main() { struct Data x; x.stuid = 100; x.detail.age = 20; x.detail.name = “Qoo she"; x.detail.address = "新北市新莊區復興路1號"; }

7 struct的運算符號 . struct list { int data;
struct list *next; // a pointer to struct list };  struct list listOne, listTwo, listThree; listOne.next = &listTwo; listTwo.next = &listThree; (*(*listOne.next).next).data = 0; listOne.next.next.data = 0; 錯!!! . 的左邊必須是struct,不可以是pointer next前的 * 不可省,否則就遞迴定義, compiler無法決定struct list的大小 如何由listOne設定到listThree的data? xxxx22 ? ? xxxx33 ? next ? ? ? data xxxx11 xxxx22 xxxx33 listone listtwo listthree 運算元 結合順序 (   ) [   ] -> . 左到右 ! ~ ++ -- + - * & (type)  sizeof  右到左

8 struct的運算符號 > struct裡有pointer to struct, 想用該pointer來存取結構成員時, 必須很小心用*和()來表達 結構成員包括指向結構的指標(define a pointer to struct in a struct), (*(*listOne.next).next).data語法既難寫又難懂 C語言定義 -> 運算符號 -> 的左邊是一個pointer to struct, 右邊則是該pointer指到的結構成員 ->為第一優先權 (*(*listOne.next).next).data = 0; listOne.next->next->data = 0; xxxx11 xxxx22 xxxx33 ? listone listtwo listthree next data 運算元 結合順序 (   ) [   ] -> . 左到右 ! ~ ++ -- + - * & (type)  sizeof  右到左


Download ppt "Struct結構 迴圈 01010 10101 01010 10101 01010 10101."

Similar presentations


Ads by Google