程式設計思維的點滴

2021-07-07 04:12:32 字數 1651 閱讀 9652

程式設計思路要清晰,要對自己所要做的事情有個百分之一百二十的了解。

不能模稜兩可差不多就行。

往後的日子還很長,只圖一時的爽快,將得不償失,不值得,

甜在前頭,苦在哭在後頭,是令人很煩惱的一件事情。

無論時間多麼倉促,自己都要想辦法弄清楚自己所面對的是什麼東西,

我要把它做成什麼樣子,做到什麼程度。

做任何事情,試錯沒有問題,但不能不經過大腦而滿目的如無頭蒼蠅一般胡亂瞎捉摸,那樣只是做無用功,甚至會適得其反。

要經過自己的腦袋思索一番,想象一番,沿著可能的條件和方向摸索,

你會像在黑暗中摸索前進的道路一樣,你會漸漸靠近出口,漸漸靠近光明。

編寫軟體,要分清程式的架構,層與層、模組與模組、介面與介面之間的聯絡。

既要熟悉各層、各模組、各界面的內容,

也要熟悉它們組合後系統的概貌和邏輯,

知道系統是什麼,它能幹什麼,不能幹什麼。

以windows下程式為例。

它們分使用者模式和核心模式。

使用者模式的程式有應用程式、使用者dll和系統dll。

核心模式有核心、驅動程式和硬體。

從分分層的角度看,由上往下,一次是應用層程式,然後是dll、lib庫,

然後是驅動,然後是fpga,然後是硬體。

在編寫驅動的時候,有時候需要上層的東西。

乙個暫存器,它裡面的bit位被用於不同的作用。

現在要擴充乙個暫存器的乙個bit位,

很顯然,應用層需要修改,lib需要改動,同樣驅動也要改。

比如:

typedef union example

u; ulong v;

};typedef _register

register, *pregister;

void setregisterer_examplea(pregister reg, ulong a)

現在union example裡要擴充套件u的乙個bit位,比如擴充套件成如下:

typedef

union example

u; ulong v;

};

那麼要增加乙個設定b的介面,可以把函式setregisterer_examplea擴充套件乙個引數,如下:

void setregisterer_examplea(pregister reg, ulong a, ulong b)

但這樣改介面setregisterer_examplea,會帶來所有呼叫setregisterer_examplea地方的修改,一些呼叫setregisterer_examplea的地方,沒有辦法獲得ulong b引數資訊,

因此擴充套件setregisterer_examplea乙個引數不是乙個好辦法,有的時候都不能這麼弄。

看看setregisterer_examplea函式裡面,它是讀乙個暫存器,只是修改跟a相關的,再寫暫存器,因此,可以再寫乙個介面setregisterer_exampleb,專門修改b,

比如如下**:

void setregisterer_exampleb(pregister reg, ulong b)

setregisterer_exampleb函式是,

C 程式設計點滴

有效解決記憶體洩露 一 你需要乙個函式將乙個陣列賦值為等差數列,並將會在函式的外部使用它。不合理 int getarray int n return p 合理 void getarray int p,int n 解析 檢查記憶體洩露的最好辦法,就是檢查完全配對的申請和釋放,在函式中申請而在外部釋放,...

wince 程式設計點滴

me.formborderstyle windows.forms.formborderstyle.none 設定為無邊框模式即可。private sub button1 click byval sender as system.object,byval e as system.eventargs h...

linux 程式設計點滴

進入vim 介面以後,在命令列 輸入 sp filename,就可以顯示多個檔案的內容 輸入i 就進入剛才建立的檔案的編輯模式下了 crlt w 下箭頭,就進入了下乙個檔案的文字內容 在命令模式下 set nu 可以顯示行號 滑鼠箭頭指向乙個開始的行 然後輸入乙個數字 n 並輸入兩個dd 這樣就從滑...