C 學習筆記 C語言模擬this指標

2021-08-29 23:49:52 字數 1163 閱讀 2364

都知道,c++中類的成員變數和成員函式是分開儲存的,變數可以儲存在堆、棧、全域性區,而函式只能存在**段,並且乙個類只對應一套成員函式,那麼如何通過類物件呼叫成員函式呢?

答案是通過this指標,類物件將this指標傳遞給函式,所以函式能夠使用類物件的成員變數,而this指標儲存的就是當前物件的位址。這個傳遞的行為被編譯器隱藏起來了,下面通過c**模擬this指標的傳遞過程。

標頭檔案test.h

#ifndef _test_h_

#define _test_h_

typedef void demo;//隱藏對外屬性,模擬private限定符

typedef struct test//定義類

test;

//定義類成員函式,通過引數可以看出來通過指標傳遞物件

demo* creat(int i, int j);//模擬建構函式,返回值為模擬出來的this指標

int geti(demo* pthis);

int getj(demo* pthis);

int add(demo* pthis, int k);

void free(demo* pthis);//模擬析構函式

#endif // _test_h_

test.c

#include "test.h"

#include //函式中都是通過物件指標進行資料傳遞使用的

通過此**顯式的展現了c++中this指標的傳遞過程。

學習筆記 C語言

1.for 1 等價於 while 1 2.程式的區域性變數存在於 堆疊 中,全域性變數存在於 靜態區 中,動態申請資料存在於 堆 中。3.區域性變數能否和全域性變數重名?能,區域性會遮蔽全域性。要用全域性變數,需要使用 4.對於乙個頻繁使用的短小函式,在c語言中應用什麼實現,在c 中應用什麼實現?...

C語言學習筆記02 指標

指標也是一種變數,占有記憶體空間,用來儲存記憶體位址。在指標宣告時,號代表所宣告的變數為指標。在指標使用時,號表示操作指標所指向的記憶體空間的值。p相當於通過位址 p變數的值 找到一塊記憶體,然後操作記憶體。p放在等號的左邊賦值 給記憶體賦值 p放在等號的右邊取值 從記憶體獲取值 指標變數和它所指向...

C語言學習筆記(四) 指標

c語言學習筆記 四 指標 include intmain p就是乙個指標,p就是取出p指向位址的值 陣列 相同型別的資料集合 include intmain 在這個程式中,p是乙個指標,a是乙個陣列,若p a 0 或者p a就是p指向陣列的第乙個元素,接下來就可以對p進行 1或 1進行偏移操作 in...