基本知識總結一

2021-04-13 09:33:15 字數 1871 閱讀 6251

一.物件導向和面向過程的區別

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

例如五子棋,面向過程的設計思路就是首先分析問題的步驟:

1、開始遊戲,

2、黑子先走,

3、繪製畫面,

4、判斷輸贏,

5、輪到白子,

6、繪製畫面,

7、判斷輸贏,

8、返回步驟2,

9、輸出最後結果。

把上面每個步驟用分別的函式來實現,問題就解決了。

而物件導向的設計則是從另外的思路來解決問題。整個五子棋可以分為:

1、黑白雙方,這兩方的行為是一模一樣的,

2、棋盤系統,負責繪製畫面,

3、規則系統,負責判定諸如犯規、輸贏等。

第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子布局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。

play.bitscn.com累了嗎玩一下吧

可以明顯地看出,物件導向是以功能來劃分問題,而不是步驟。同樣是繪製棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪製版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而物件導向的設計中,繪圖只可能在棋盤物件中出現,從而保證了繪圖的統一。

功能上的統一保證了物件導向設計的可擴充套件性。比如我要加入悔棋的功能,如果要改動面向過程的設計,那麼從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整。如果是物件導向的話,只用改動棋盤物件就行了,棋盤系統儲存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對物件功能的呼叫順序都沒有變化,改動只是區域性的。

到這裡就可以很明顯的看出物件導向和面向過程的區別所在了。

二.全域性變數、靜態全域性變數、靜態區域性變數和區域性變數。

變數可以分為:全域性變數、靜態全域性變數、靜態區域性變數和區域性變數。

全域性和靜態變數都在堆裡。

全域性變數的作用範圍是整個程式(如果程式是多個檔案,必須在其他的檔案中說明)。

靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍就是這個函式。

靜態全域性變數,只本檔案可以用。

全域性變數是沒有定義儲存型別的外部變數,其作用域是從定義點到程式結束.省略了儲存型別符,系統將預設為是自動型.

靜態全域性變數是定義儲存型別為靜態型的外部變數,其作用域是從定義點到程式結束,所不同的是儲存型別決定了儲存地點,靜態型變數是存放在記憶體的資料區中的,它們在程式開始執行前就分配了固定的位元組,在程式執行過程中被分配的位元組大小是不改變的.只有程式執行結束後,才釋放所占用的記憶體.

自動型變數存放在堆疊區中.堆疊區也是記憶體中一部分,該部分內存在程式執行中是重複使用的.

按儲存區域分,全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的靜態儲存區域,區域性變數存放在記憶體的棧區。

按作用域分,全域性變數在整個工程檔案內都有效;靜態全域性變數只在定義它的檔案內有效;靜態區域性變數只在定義它的函式內有效,只是程式僅分配一次記憶體,函式返回後,該變數不會消失;區域性變數在定義它的函式內有效,但是函式返回後失效。

全域性變數和靜態變數如果沒有手工初始化,則由編譯器初始化為0。區域性變數的值不可知。

int a;  /*全域性*/

static int b;  /*靜態全域性*/

int main()

這段**如果是寫在file.c裡面的,那麼file2.c就不能呼叫b;

但是file2.c中可以通過宣告外部變數extent a;

從而呼叫a

ios 基本知識總結(一)

一 label換行 警告 label的高度起碼要有2行的高度,不然,無論怎麼設定,都不會出現換行效果。如果要設定tableviewcell裡的文字換行,設定cell高度的時候,請先在tableview的xib檔案中設定cell的高度,不然cell的高度滿足不了換行的高度,是沒有效果的。換行,一般設定...

BIOS基本知識總結

什 麼 是 bios 計算機使用者在使用計算機的過程中,都會接觸到bios,它在計算機系統中起著非常重要的作用。bios,完整地說應該是rom bios,是唯讀儲存器基本輸入 輸出系統的簡寫,它實際上是被固化到計算機中的一組程式,為計算機提供最低階的 最直接的硬體控制。準確地說,bios是硬體與軟體...

C基本知識總結

c語言關鍵字總共有32個.資料型別14個 void,char,int,float,double,short,long,signed,unsigned,struct,union,enum,typedef,sizeof.控制類別6個 auto,static,register const,volatile...