C 基礎 - 結構
阿新 • • 發佈:2017-09-11
rpi oat variable 布局 fis 成員 價格 變量 ria
C語言提供 結構變量(struct variable) 來擴展表示數據的能力。
需求:創建一個圖書目錄。
打印每本書的各種信息: 書名,作者,價格,出版社等。
可以使用C結構來描述數據。
結構聲明:描述了一個結構的組織布局。
1 struct book { /* structure template: tag is book */ 2 char title[MAXTITL]; 3 char author[MAXAUTL]; 4 float value; 5 }; /*end of structure template */
並沒有描述實際的數據對象,只是描述了對象由什麽組成。
定義結構變量
結構有兩層含義
一、結構布局
二、定義結構變量
/* 把library 聲明為一個使用book結構布局的結構變量 */ struct book library
或者可以這樣寫
struct book { /* book標記可以省略 */
char title[MAXTITL];
char author[MAXAUTL];
float value;
} library; /* 聲明的右花括號後跟變量名 */
/* book類型的結構數組 */
struct book library[MAXBKS];
/* 聲明初始化結構指針 */
struct book * library;
/* 賦值,需要加上取址符 */
library = &suprise;
初始化結構
struct book library = { "C Primer Plus", "史蒂芬 普拉達", "80" };
還可以使用初始化器來初始化成員
/* 只初始化book結構中 value成員 */
struct book gift = { .value= 10.99 }; /* 按照任意順序初始化成員 */ struct book surpise = { .value = 25.99, .author = "Steven", .title = "C Primer Plus" };
訪問結構成員
點來訪問結構中的成員
library.value
.value .author .title 相當於結構的下標。
用指針訪問結構中的成員
如果 him == &library, 那麽him->income
如果 him == &library[0], 那麽him->income 即是 library[0].income
另一種方法: & 與 * 是一組互逆運算
fellow[0].income == (*him).income /*一定要加括號,因為.的優先級高*/
結構嵌套
struct names { /* 第一個結構 */ char fist[LNE]; char last[LEN]; }; struct guy { struct names handle; /* 結構嵌套 */ char favfood[len]; char job[LEN]; float income; };
struct guy fellow = {
{David Zhang},
"Fish",
"Software Engineer",
"9999.00",
};
/* 訪問嵌套中結構的成員 */
fellow.handle.first
向函數傳遞結構的信息
結構之間可以相互賦值
聯合是一種數據類型
枚舉
typedef
C 基礎 - 結構