程序員考試筆記十一:結(jié)構(gòu)體
今天講到結(jié)構(gòu)體,在講之前先把前天布置的幾道指針的練習(xí)題先講了。那些題目都是老潭書里的指針那章,大家自己慢慢做做喔,用來掌握指針很重要喔,學(xué)編程就是要多實踐。今天我上網(wǎng)里看到了一篇很好的文章,我帖下來:
發(fā)信人: ycs830 (老山羊), 信區(qū): C
標(biāo) 題: Re: 如果快速學(xué)會C語言
學(xué)會C語言很容易,它沒幾個語句,沒幾個函數(shù)。但用是另一回事。就象華山劍法難學(xué),令狐師兄學(xué)了若干年,但還是誰也打不贏。獨孤求敗只有三招,令狐師兄卻熬了若干小時就學(xué)會,但他先看了各派劍法,融會貫通需要和高手來回打架。
學(xué)C是一個過程,我現(xiàn)在看C和十年前觀念很不一樣。說到底,C只是一個工具,問題是你要干什么,怎么干。C玩好了就象獨孤九劍學(xué)好了,你可以俯視其它劍法。但岳不群學(xué)獨孤九劍就不見得有令狐沖的效果。學(xué)數(shù)學(xué)對邏輯思維能力是個鍛煉。我的數(shù)學(xué)知識大部分還給了老師,但邏輯思維能力卻對編程極有用。數(shù)分、高代、空解作為數(shù)學(xué)系的基礎(chǔ)課,確實對我很有用。C語言是死的,算法是活的,就象獨孤九劍本無招--在融天下劍法之后。
大家覺得怎么樣?自己慢慢思考吧。
好了,現(xiàn)在該講講今天的課題了,結(jié)構(gòu)體。我們先來了解一下什么叫結(jié)構(gòu)體,其實結(jié)構(gòu)體就像數(shù)據(jù)庫里的記錄,結(jié)構(gòu)體里面的就相當(dāng)于一條記錄里的各個屬性,我們在描述一樣?xùn)|西通常都是集在一起的一個整體,就好比像一個學(xué)生吧,學(xué)生有他相關(guān)的屬性,比如姓名、年齡、性別、班級等等。我們編程里雖然可以定義多個變量來分別代表著這些屬性,令可這樣一個一個分開來何必不將他們集中在一個整體里呢,所以C語言里就考慮到這個有了結(jié)構(gòu)體。我們看看如何定義一個結(jié)構(gòu)體,如下:
struct student
{
char name[10];
char sex;
int age;
:
:
}; /*注意喔,這個分號是一定要的喔*/
這里定義的是一個結(jié)構(gòu)體student,但這絕對不是定義了一個可以調(diào)用的變量,這只是聲明好有這么一個結(jié)構(gòu),我們要學(xué)定義一個結(jié)構(gòu)的變量的話,就像定義其實類型一樣:
int a,b; 和 struct student a,b; 都是同一個道理,都只是定義一個變量,類型就是看前面的了。一樣可以定義其它的類型,比如struct student *p;這也是正確的(結(jié)構(gòu)體數(shù)組也是有的喔)。這種指針類型可是以后要講到的鏈表里很重要的喔,那么先來看看這種結(jié)構(gòu)體指針先吧。我們同樣可以用指針的方法指向這個結(jié)構(gòu)體的首地址:
a.sex='m';這是最調(diào)用結(jié)構(gòu)體里的元素運算符 .
struct student *p;
(*p). sex='m';
這里一樣也是這樣來表示,不過結(jié)構(gòu)體有另一種很好的表示方式,用到了另一個運符號->。p->sex='m';我們來這樣理解這個表達式,p是地址,->這個是指向這個結(jié)構(gòu)體里的,p->sex就是指向這個結(jié)構(gòu)體里的元素了。
【相關(guān)文章】