善於利用C 語言特性編碼 3

2021-04-12 21:25:04 字數 795 閱讀 4987

一句話,用隱式指標來實現把一些不想讓別人知道的資料結構定義在.c檔案中,而不是通常的.h標頭檔案中。這樣,只要.c檔案不公開,別人就不能獲得資料結構的詳細資訊。

看乙個列子:

下面是inte***ce.h標頭檔案的內容,我們獲得這個標頭檔案,只知道有個struct sdata的資料結構和sdata_init()的函式。至於這個sdata結構包含些什麼內容我們一點不知道,所以也不可能進行什麼更改;

inte***ce.h:

#include

#include

#include

#include

typedef struct sdata * sdata;

sdata sdata_init(int i);

void sdata_print(sdata sdata);

下面我們看寫inte***ce.c檔案的內容:

#include "inte***ce.h"

struct sdata;

sdata sdata_init(int i)

void sdata_print(sdata sdata)

恩,在這個檔案中才有具體的資料結構定義和函式的實現;

寫個測試程式:

test.c

#include "inte***ce.h"

int main()

可以看到,對於寫test.c的程式設計師來說,他並不了解sdata的內部結構是怎麼樣的,

他只要根據inte***ce.h提供的函式進行各項操作就可以了。

這就是隱式指標的簡單應用。開發藉口**這很重要。

C 語言特性

a1 總的原因是,加速debug版下編譯鏈結時間.用空間換時間.具體原因為下。每乙個子程式 函式體 編譯後在 段有一定的長度,為了讓了程式緊湊,所以希望各函式體連線存放,但是在除錯 修改過程中,各函式體體會頻繁的變換長度,所以呼叫函式的個相對位址,就會需要鏈結器反覆修改.為此,各個函式體 區間並不是...

C程式設計 第八章 善於利用指標

1.輸入三個數,由大到小排序 includeint main if p1 p3 if p2 p3 printf d n d n d n p1,p2,p3 return 0 2.輸入三個字串,按由小到大的順序輸出 includeusing namespace std main if strcmp x,...

C 短路求值特性的利用

求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c class solution 1.利用遞迴避免迴圈的使用 2.利用c 的短路求值特性,實現遞迴的終止,避免了條件判斷。3.短路求值 作為 和 操作符的運算元表示式,這些...