C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
C/C++基礎程式設計班 陣列 (Array)
資料結構使用Java 第1章 資料結構與Java程式複習.
資料結構 Data Structure.
第2章 陣列與結構 (Arrays and Structures)
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
結構(struct).
第十一章 結構.
程式設計 博碩文化出版發行.
LINQ 建國科技大學 資管系 饒瑞佶.
第十章 結構(structure)、聯集(union)
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
Visual C++ introduction
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
保留字與識別字.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
第9章 自訂資料型態 – 結構 9-1 結構資料型態 9-2 結構陣列 9-3 指標與結構 9-4 動態記憶體配置 9-5 聯合資料型態
STRUCTURE 授課:ANT 日期:2011/4/25.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
Chapter 7 指標.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
|12 結構與列舉型態.
第一單元 建立java 程式.
Chapter 5 複合資料型態.
陣列(Array).
開始使用Visual C++.
第 19 章 XML記憶體執行模式.
C语言程序设计.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
OOP6 結構Struct 黃兆武.
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
Java變數 2014/6/24.
第十章 指標.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
本节内容 字节对齐.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
C qsort.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
挑戰C++程式語言 ──第7章 輸入與輸出.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
第14章 結構與其他資料形式.
陣列與結構.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
Programming & Language Telling the computer what to do
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
SQLite資料庫 靜宜大學資管系 楊子青.
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
台大資訊工程學系 資訊系統訓練班 第119期 吳晉賢
安排座位.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班

課程大綱 C語言簡介 基本資料型態, 變數, 基本輸入輸出 控制敘述- 選擇控制與重覆控制 陣列 函式 指標 字元與字串 結構 檔案處理

本次課程大綱 資料型態別名 (typedef) 結構(Structure) 結構陣列 結構與函式 聯合(Union) 列舉資料型態 (enum)

typedef型態定義 (1) typedef資料型態 識別字(別名); 資料型態是識別字所對應的真實資料型態,它可以是C語言的基本資料型態,或其他已經定義過的自訂資料型態,或已經使用typedef定義過的別名。 識別字(別名),一旦經由typedef定義之後,在程式中就可以使用該別名來宣告變數,而實際上,該別名將會被編譯器代替為原來的資料型態。

typedef型態定義 (2) 範例: 例子 typedef int score; /* 定義資料型態的別名 */ score student01,student02; typedef char * STRING; /* 定義資料型態的別名 */ STRING str1="Book"; 例子

結構 (structure) (1) 由於每一種資料可能擁有不同的資料型態,因此,我們有的時候無法單純使用多維陣列來加以存放資料,例如:我們要記錄全班同學的成績,每一位同學的資料為學號(字串資料型態)、計概成績(整數資料型態)、數學成績(整數資料型態)、英文成績(整數資料型態)、平均成績(浮點數資料型態),如下圖。

結構 (structure) (3) 結構能夠結合數個彼此相關的變數在一個名稱之下, 並可包含許多不同資料型態的變數. 和結構相比, 陣列也只能包含相同資料型態的元素. struct 結構型態 { 資料型態 變數1; 資料型態 變數2; ………………….. 資料型態 變數3; };

結構 (structure)定義 struct開始定義一個結構 student稱為該結構的標籤(struct tag) { char stu_id[12]; /* 學號 */ int ScoreComputer; /* 計概 */ int ScoreMath; /* 數學 */ int ScoreEng; /* 英文 */ float ScoreAvg; /* 平均成績 */ };

結構的記憶體內容

結構宣告 struct 結構名稱 變數或陣列名稱 struct 結構資料型態名稱 { 結構主體 }結構變數名稱; struct student John; struct student IM[50]; struct 結構資料型態名稱 { 結構主體 }結構變數名稱; struct X { … }Y;

存取結構 (1) 結構體變數.資料項 結構體指標變數->資料項 struct student John; /* John是一個普通結構體變數 */ ……………… John.ScoreMath=86; John.ScoreAvg=76.67; 結構體指標變數->資料項 struct student John; /* John一個普通結構體變數 */ struct student *pJohn; /* pJohn是一個結構體指標變數(指向結構體變數的指標) */ pJohn = &John; /* pJohn指標指向John變數 */ pJohn->ScoreMath=86; pJohn->ScoreAvg=76.67;

存取結構 (2) 結構中的成員可以透過點運算符號 . 進行存取. 例子1: 建立一個存放學生資料的結構. 例子2: 一開始就給結構初始值. 例子3: 輸入某學生的出生日期, 姓名及學號.

結構與指標 (1) struct student { char name[20]; int num; }; struct student *stud;

結構與指標 (2) 若要存取結構指標變數的成員, 必須使用下列的方法: student->name; 或 輸入一個學生的資料, 並且將他輸出

結構陣列 利用結構可以存放個人的許多資料, 若宣告成陣列的話,則可以存放一群人的資料. struct { char name[20]; int num; } class[40]; class[0].name : 第一個成員的name元素 class[0].num : 第一個成員的num元素 …..以此類推

結構陣列的記憶體內容 struct student John; struct student IM[50];

例子 輸入三個學生的學號,姓名及成績並列印出來.

巢狀結構 結構中的成員也是結構時, 可以用巢狀結構來處理. 例子

結構與函式 當函式的參數的型式為結構時,將結構型態傳給函式的方式將和一般的資料型態相同. 例子1: 個別傳送結構成員 例子2: 整個結構傳送 例子3: 輸入5個學生的資料,並輸出

練習 建立一個員工結構, 裡面有 name, age, address, salary, phone的資料結構. 由使用者輸入5個員工資料.

聯合 (union) 聯合與結構相當類似,兩者之間的差異在於結構中的資料型態必須佔用不同的記憶體空間,而聯合可以使不同的資料型態佔用相同的記憶體空間. 聯合變數的長度是其中的最大值. union { int one; float two; } num;

聯合 (union) 與結構 union u_member { short int id; int income; }John; struct s_member { short int id; int income; }Mary;

例子 利用sizeof()比較結構和聯合在記憶體中所佔空間的差異. 輸入一個員工的加班時數及正常上班時數,並計算出該員工薪資.

enum列舉集合 希望變數內容被侷限在某些合法的範圍內,此時,我們可以將所有可能的狀況列舉出來,並透過C語言提供的進階資料結構enum來加以宣告。 定義語法 enum 列舉資料型態名稱{ 此資料型態內所有可能的成員 }; enum manufacturer { IBM, MAXTOR,WD,SEAGATE }; enum manufacturer HardDisk; enum 列舉資料型態名稱{ 此資料型態內所有可能的成員 }變數1,變數2,….; enum animal { dog,cat,bird } pet;

練習 改寫例子 例子 列舉成員 IBM MAXTOR WD SEAGATE 序號 1 2 3 列舉成員 IBM MAXTOR WD 1 2 3 enum manufacturer {IBM=1,MAXTOR,WD=10,SEAGATE}; 列舉成員 IBM MAXTOR WD SEAGATE 序號 1 2 10 11

今天學到了什麼 如何使用資料型態別名 (typedef) 如何使用結構(Structure) 如何使用結構陣列 如何使用結構與函式 如何使用聯合(Union) 如何使用列舉資料型態 (enum)