結構體類型變數的定義和引用

來源:互聯網
上載者:User

前面的課程我們學習了一些單一資料型別(整型、實型、字元型)的定義和應用,還學習了數組(一維、二維)的定義和應用,這些資料類型的特點是:當定義某一特定資料類型,就限定該類型變數的儲存特性和取值範圍。對單一資料型別來說,既可以定義單個的變數,
也可以定義數組。而數組的全部元素都具有相同的資料類型,或者說是相同資料類型的一個集合。
在日常生活中,我們常會遇到一些需要填寫的登記表,如住宿表、成績表、郵寄地址等。
在這些表中,填寫的資料是不能用同一種資料類型描述的,在住宿表中我們通常會登記上姓名、性別、社會安全號碼碼等項目;在郵寄地址表中我們會寫下姓名、郵編、郵箱地址、電話號碼、E - m a i l等項目。這些表中集合了各種資料,無法用前面學過的任一種資料類型完全描述,因此C引入一種能集中不同資料類型於一體的資料類型—結構體類型。結構體類型的變數可以擁有不同資料類型的成員,是不同資料類型成員的集合。
在上面描述的各種登記表中,讓我們仔細觀察一下住宿表、成績表、郵寄地址等。
住宿表由下面的項目構成:

這些登記表用C提供的結構體類型描述如下:
住宿表:
struct accommod
{
char name[20]; / *姓名* /
char sex; / *性別* /
char job[40]; / *職業* /
int age; / *年齡* /
long number; / *社會安全號碼碼* /
} ;
成績表:
struct score
{
char grade[20]; / * 班級* /
long number; / * 學號* /
char name[20]; / *姓名* /
float os; / *作業系統* /
float datastru; / * 資料結構* /
float compnet; / * 電腦網路* /
} ;
郵寄地址表:
struct addr
{
char name[20];
char department[30];/ * 部門* /
char address[30]; / *住址* /
long box; / * 郵編* /
long phone; / * 電話號碼* /
char email[30]; / * E m a i l * /
};
這一系列對不同登記表的資料結構的描述類型稱為結構體類型。由於不同的問題有不同的資料成員,也就是說有不同描述的結構體類型。我們也可以理解為結構體類型根據所針對的問題其成員是不同的,可以有任意多的結構體類型描述。
下面給出C對結構體類型的定義形式:
struct 結構體名
{
成員項表列
};
有了結構體類型,我們就可以定義結構體類型變數,以對不同變數的各成員進行引用。
7.1.1 結構體類型變數的定義
結構體類型變數的定義與其它類型的變數的定義是一樣的,但由於結構體類型需要針對問題事先自行定義,所以結構體類型變數的定義形式就增加了靈活性,共計有三種形式,分別介紹如下:
1) 先定義結構體類型,再定義結構體類型變數:
struct stu / *定義學生結構體類型* /
{
char name[20]; / * 學生姓名* /
char sex; / * 性別* /
long num; / *學號* /
float score[3]; / * 三科考試成績* /
};
struct stu student1,student2;/ * 定義結構體類型變數* /
struct stu student3,student4;
用此結構體類型,可以定義更多的該結構體類型變數。
2 ) 定義結構體類型同時定義結構體類型變數:
struct data
{
int day;
int month;
int year;
} time1,time2;
也可以再定義如下變數:
struct data time3,time4;
用此結構體類型,同樣可以定義更多的該結構體類型變數。
3) 直接定義結構體類型變數:
struct
{
char name[20]; / *學生姓名* /
char sex; / *性別* /
long num; / *學號* /
float score[3]; / *三科考試成績* /
} person1,person2; / *定義該結構體類型變數* /
該定義方法由於無法記錄該結構體類型,所以除直接定義外,不能再定義該結構體類型變數。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。