最近寫了乙個linux 下tcp聊天室程式,剛開始時是寫在乙個檔案裡的版本,後來整理了思路寫在了不同的檔案裡,於是考慮程式間的呼叫關係,引數傳遞,介面之類的問題,發展到最後考慮的是資料完全的封裝。
比如在test.c中定義
用了這樣的方法封裝資料後,對malloc 和free的呼叫成了必須的步驟,正好對應了c++的建構函式和析構函式,相比於c++,如果c語言每個模組都用這樣的方法,那麼每個模組中都得寫init和dinit這樣的函式,c++的構造和析構函式的確方便了不少#include "stu.h"
struct stu ;
struct stu* stu_init()
void stu_dinit (struct stu* stu)
stu_setname (const char* name, struct stu* stu)
char* stu_getname (struct stu)
在test.h中
struct stu; //以前我會把結構體的定義放在.c檔案中,這次,只把宣告放在這裡,
//於是其他使用者無法知道該結構體的定義,而且無法直接訪問該結構體的成員,
//由此達到封裝的目的
struct stu* stu_init() ;
void stu_dinit (struct stu* stu) ;
stu_setname (const char* name, struct stu* stu);
char* stu_getname (struct stu);
在main.c中
#include 「test.h」
void main (void)
資料封裝和處理 C語言
資料封裝和處理 c語言 c語言,面向過程,最核心的就是資料處理。有時我們需要處理的資料量很大,而且資料型別也不一,那有沒有一種方法可以讓這些資料被統一呼叫和處理呢?有的,那就是封裝這些資料。將 資料處理 抽象出來,無非就是資料定義,資料的值,資料處理這三個東西,那麼我們可以定義乙個結構體,這個結構體...
用C語言封裝資料與方法
類的乙個特徵就是資料與方法封裝在一起,在編譯器越來越智慧型的今天,大多數程式設計師已經習慣了資料與方法 本來 就是乙個 整體 的概念。事實是不是這樣呢?在物件導向語言出現之前的程式世界又是什麼樣的呢?讓我們先回到c的世界中,看看那裡的資料與方法 c中稱為函式 是什麼樣子的。在c中通常定義乙個結構體用...
C 資料封裝
所有的 c 程式都有以下兩個基本要素 封裝是物件導向程式設計中的把資料和運算元據的函式繫結在一起的乙個概念,這樣能避免受到外界的干擾和誤用,從而確保了安全。資料封裝引申出了另乙個重要的 oop 概念,即資料隱藏。資料封裝是一種把資料和運算元據的函式 在一起的機制,資料抽象是一種僅向使用者暴露介面而把...