關於C 指標很好的介紹

2021-07-06 11:29:42 字數 1217 閱讀 1937



通過指向類的null指標呼叫類的成員函式

試圖用乙個null指標呼叫類的成員函式,導致崩潰:

#include 

using namespace std;

class a

void

set(int x)

intget() const

};int main()

為什麼會這樣?

通過非法指標呼叫函式,就相當於給函式傳遞了乙個指向函式的非法指標!

但是為什麼pa2->dumb()會成功呢?

因為導致崩潰的是訪問了成員變數!!

使用已經釋放的指標

struct x 

;int foo()

使用未初始化的指標

如果你這樣寫,編譯器會提示你使用了未初始化的變數p。

void fooa()

那麼如果我釋放乙個初始化的指標呢?

void foob()

結果是一樣的!!

釋放已經釋放的指標

直接看看**:

void fooa() 

這樣的問題也許不會立即使你的程式崩潰,那樣後果更加嚴重!!

沒有呼叫子類的析構函式

之前的部落格講過,父類的析構函式最好宣告為虛!!

parentclass *pobj = new childclass;

...delete pobj;

上述**會造成崩潰,如果父類的析構函式不宣告為虛,那麼不會呼叫繼承類的析構函式,造成記憶體洩露。

記憶體溢位

當我們拷貝字串的時候,我們常常會用到 memcpy函式。這裡特別需要注意的就是字串結尾的null字元:

char *p = (char *)malloc(strlen(str));

strcpy(p, str);

為了躲過這個坑,只需要把 strlen(str) 改為 strlen(str)+1

C 關於指標,繼承和多型介紹

目錄 首先,指標不僅僅是乙個位址,還存在乙個和所指向內容大小相關的值,如下 include using namespace std int main 從執行結果可以看出pa 1,位址增加了4個位元組 pb 1,位址增加了2個位元組 ppa 1,位址增加了2個位元組 而使用void指標指向整型變數a,...

C指標介紹

參考 舉例 int p 整型變數 int p 整型型別的指標 int p 3 整型型別的指標陣列 int p 3 指向整型陣列的指標 int p 指向整型指標的指標 int p int 函式,入參是整型數,返回值是整型數 int p int 函式指標,指向函式的指標,入參是整型,返回值是整型 int...

關於C 的介紹

c 是一種靜態型別的 編譯式的 通用的 大小寫敏感的 不規則的程式語言,支援過程化程式設計 物件導向程式設計和泛型程式設計。注意 使用靜態型別的程式語言是指在編譯時執行型別檢查,而不是在執行時執行型別檢查。ansi 標準 ansi 標準是為了確保 c 的便攜性 您所編寫的 在 mac unix wi...