1. 使用struct來儲存資料
2. 使用struct裡面的函式指標指向相應的函式
#include #include // 不完整的宣告,方便後面函式指標型別變數的定義實現過程: 相應的函式的定義, 要接收結構體的位址, 方便struct的資料的操作.struct person;
typedef struct person *pperson;
typedef void (*setage)(pperson person, int age);
typedef int (*getage)(pperson person);
/*** 結構體,包含普通的變數(資料)和函式指標(行為)
**/struct person ;
void setagefuncimpl(pperson person, int age)
int getagefuncimpl(pperson person)
int main()
從而實現了函式只操作自己的資料,不會操作其他物件的資料.
問題: 現在是"自己呼叫乙個操作自己的函式,同時卻需要傳遞自己的指標給函式", 能否
根據自己呼叫了乙個函式, 同時隱含將自己的資料位址的指標傳遞給函式. 如果自己來實現
就是函式操作,預先將資料位址傳遞到乙個地方(例如暫存器), 函式執行時, 從指定的地方(例如暫存器)
讀取資料位址, 之後運算元據.
#include #include // 不完整的宣告,方便後面函式指標型別變數的定義可以看上,上述傳遞物件的位址,獲取物件的位址,都是機械的重複. 如果能夠讓編譯器知道呼叫乙個方法struct person;
typedef struct person *pperson;
typedef void (*setage)(int age);
typedef int (*getage)();
/*** 結構體,包含普通的變數(資料)和函式指標(行為)
**/struct person ;
void setagefuncimpl(int age)
int getagefuncimpl()
int main()
前,需要傳遞乙個指標, 方法之後,知道應該獲取乙個指標, 就不用重複這些步驟了.
這個就是c++中class, c++編譯器就會幹這些事情, 類其實也就是乙個stuct啊, 呵呵.
從c物件導向的實現理解c 的物件(二)
1.類就可以看作乙個struct,類的方法,可以理解為通過函式指標的方式實現的,類物件分配記憶體時,只分配成員變數的,函式指標並不需要分配額外的記憶體儲存位址。2.c 中類的建構函式,就是進行記憶體分配 malloc 呼叫建構函式 3.c 中類的析構函式,就時 記憶體 free 4.c 是基於棧和全...
C 物件導向理解
物件導向是面向過程演化而來 面向過程 面向的是完成一件事的過程,強調完成這件事的動作 例項 把衣櫃搬到臥室裡 1.開啟臥室門 2.把衣櫃搬到臥室裡 3.關閉臥室門 面向過程的思維 小明 瘦小 個子矮 小明踩著凳子開啟臥室門 小明找老王幫忙把衣櫃搬到臥室裡 小明踩著凳子關閉臥室門 老王 強壯 老王自己...
c實現物件導向
c語言的結構體裡面沒有函式,但是c 裡面有函式,所以今天實現乙個c語言物件導向的程式 1 封裝 include include include typedef struct cmd newcmd void run newcmd pcmd void print newcmd pcmd int main...