程序員考試補課筆記-第十一天
今天講到結(jié)構(gòu)體,在講之前先把前天布置的幾道針指的練習題先講了。那些題目都是老潭書里的指針那章,大家自己慢慢做做喔,用來掌握指針很重要喔,學編程就是要多實踐。今天我上網(wǎng)里看到了一篇很好的文章,我帖下來:
發(fā)信人: ycs830 (老山羊), 信區(qū): C
標 題: Re: 如果快速學會C語言
學會C語言很容易,它沒幾個語句,沒幾個函數(shù)。但用是另一回事。就象
華山劍法難學,令狐師兄學了若干年,但還是誰也打不贏。獨孤求敗只有三
招,令狐師兄卻熬了若干小時就學會,但他先看了各派劍法,融會貫通需要
和高手來回打架。
學C是一個過程,我現(xiàn)在看C和十年前觀念很不一樣。說到底,C只是一個
工具,問題是你要干什么,怎么干。C玩好了就象獨孤九劍學好了,你可以俯
視其它劍法。但岳不群學獨孤九劍就不見得有令狐沖的效果。
學數(shù)學對邏輯思維能力是個鍛煉。我的數(shù)學知識大部分還給了老師,但
邏輯思維能力卻對編程極有用。數(shù)分、高代、空解作為數(shù)學系的基礎(chǔ)課,確
實對我很有用。C語言是死的,算法是活的,就象獨孤九劍本無招--在融
天下劍法之后。
大家覺得怎么樣?自己慢慢思考吧。
好了,現(xiàn)在該講講今天的課題了,結(jié)構(gòu)體。我們先來了解一下什么叫結(jié)構(gòu)體,其實結(jié)構(gòu)體就像數(shù)據(jù)庫里的記錄,結(jié)構(gòu)體里面的就相當于一條記錄里的各個屬性,我們在描述一樣東西通常都是集在一起的一個整體,就好比像一個學生吧,學生有他相關(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),我們要學定義一個結(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)體里的元素了。
今天講到結(jié)構(gòu)體,在講之前先把前天布置的幾道針指的練習題先講了。那些題目都是老潭書里的指針那章,大家自己慢慢做做喔,用來掌握指針很重要喔,學編程就是要多實踐。今天我上網(wǎng)里看到了一篇很好的文章,我帖下來:
發(fā)信人: ycs830 (老山羊), 信區(qū): C
標 題: Re: 如果快速學會C語言
學會C語言很容易,它沒幾個語句,沒幾個函數(shù)。但用是另一回事。就象
華山劍法難學,令狐師兄學了若干年,但還是誰也打不贏。獨孤求敗只有三
招,令狐師兄卻熬了若干小時就學會,但他先看了各派劍法,融會貫通需要
和高手來回打架。
學C是一個過程,我現(xiàn)在看C和十年前觀念很不一樣。說到底,C只是一個
工具,問題是你要干什么,怎么干。C玩好了就象獨孤九劍學好了,你可以俯
視其它劍法。但岳不群學獨孤九劍就不見得有令狐沖的效果。
學數(shù)學對邏輯思維能力是個鍛煉。我的數(shù)學知識大部分還給了老師,但
邏輯思維能力卻對編程極有用。數(shù)分、高代、空解作為數(shù)學系的基礎(chǔ)課,確
實對我很有用。C語言是死的,算法是活的,就象獨孤九劍本無招--在融
天下劍法之后。
大家覺得怎么樣?自己慢慢思考吧。
好了,現(xiàn)在該講講今天的課題了,結(jié)構(gòu)體。我們先來了解一下什么叫結(jié)構(gòu)體,其實結(jié)構(gòu)體就像數(shù)據(jù)庫里的記錄,結(jié)構(gòu)體里面的就相當于一條記錄里的各個屬性,我們在描述一樣東西通常都是集在一起的一個整體,就好比像一個學生吧,學生有他相關(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),我們要學定義一個結(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)體里的元素了。