6.1
點是最基本的物件,假定用 x 與 y 座標表示它,且 x、y 的座標值都為整數。
採用結構存放這兩個座標:
struct point ;
結構可以巢狀。我們可以用對角線上的兩個點來定義矩形:
struct rect ;
struct rect screen;
可以用語句 screen.pt1.x 引用 screen 的成員 pt1 的 x 座標。
6.2
/* makepoint: make a point from x and y components */
struct point makepoint(int x, int y)
struct rect screen;
struct point middle;
struct point makepoint(int, int);
screen.pt1 = makepoint(0, 0);
screen.pt2 = makepoint(xmax, ymax);
middle = makepoint((screen.pt1.x + screen.pt2.x)/2, (screen.pt1.y + screen.pt2.y)/2);
/* addpoints: add two points */
struct addpoint(struct point p1, struct point p2)
/* ptinrect: return 1 if p in r, 0 if not */
int prinrect(struct point p, struct rect r)
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
/* canonrect: canonicalize coordinate of rectangle */
struct rect canonrect(struct rect r)
如果傳遞給函式的結構很大,使用指標方式的效率通常比複製整個結構的效率要高。結構指標類似於普通變數指標。
struct point *pp;
將pp定義為乙個指向struct point 型別物件的指標。如果 pp 指向乙個 point 結構,那麼 *pp 即為該結構,而 (*pp).x 和 (*pp).y 則是結構成員。可以按照下例中的方式使用 pp:
struct point origin, *pp;
pp = &origin;
printf("origin is (%d, %d)\n", (*pp).x, (*pp).y);
其中,(*pp).x 中的圓括號是必須的,因為結構成員運算子 「.」 的優先順序比 「*」 的優先順序高。
結構指標的使用頻度非常高,為了使用方便,c 語言提供了另一種簡寫方式。假定 p 是乙個指向結構的指標,可以用
p->結構成員
這種形式引用相應的結構成員。
6.4
#include #include #include #define maxword 100
int getword(char *, int);
struct key *binsearch(char *, struct key *, int);
/* count c keywords; pointer version */
int main()
/* binsearch: find word in tab[0] ... tab[n-1] */
struct key *binsearch(char *word, struct key *tab, int n)
return null;
}
我們無法簡單的通過下列表示式計算中間元素的位置:
mid = (low + high) / 2; /* wrong */
這是因為,兩個指標之間的加法運算是非法的。但是,指標的減法運算卻是合法的。high-low的值就是陣列元素的個數,
因此,可以用下列表示式:
mid = low + (high-low) / 2;
C語言 第六章
c語言 第六章 飄過的小牛 部落格頻道 csdn.net 一 變數儲存空間的分類順序 先宣告的變數後分配儲存空間 撤銷的順序與之相反 先建立的後撤銷。這種機制就稱為棧機制,好像往乙個只能允許進出乙個盤子的桶裡放盤子,先放進的後拿出。在c 語言程式中,區域性變數就被分配在棧區,而且是以高階為棧底建立的...
第六章 學習筆記
1.引數分為位置引數和關鍵字引數。def func positional para x,y,z passdef func keyword para kwd1 1,kwd2 4,kwd3 9 pass2.1 當有多個位置引數時,可以用乙個星號來收集引數,函式內使用這些位置引數時可以通過for 迴圈依次...
第六章學習筆記
人員中斷 程序中斷 硬體中斷 程序的陷阱錯誤 按 ctrl c 組合鍵通常會導致當前執行的程序終止。原因如下 ctrl c組合鍵會生成乙個鍵盤硬體中斷。鍵盤中斷處理程式將ctrl c組合鍵轉換為sigint 2 訊號,傳送給終端上的所有程序,並喚醒等待鍵盤輸入的程序。在核心模式下,每個程序都要檢查和...