this指標能否為空指標?

2021-08-22 06:19:54 字數 588 閱讀 5770

首先我們知道,this指標指向的是當前物件。

空指標p同時訪問了 test() 函式和 change() 函式,在 test() 函式呼叫過程中沒有報錯,但是在 change() 函式中報錯了。

void test(person *const

this)

{}void change(person *const

this)

根據_thiscall呼叫約定可知:

(1)_thiscall只能用在類的成員函式上。

(2)引數從左向右壓棧。

(3)如果引數個數確定,this指標通過ecx傳遞給被調函式,如果不引數確定,this指標所在的引數被壓棧後壓入堆疊。

(4)對於引數不定的,呼叫者清理堆疊,否則函式自己清理堆疊。

所以:

當把空的this傳入 test(null)時:

然後 test沒有呼叫任何函式,所以執行函式。

當把空的this傳入 change(null)時:

然後 change通過this指標呼叫this->name,而this是空的,所以出錯了。

std string 賦值為空指標

今天執行的程式崩潰了,發現原因為程式中用到了stl的std string賦值為空指標,形式如下 void fun const char ptest 就其語法來說,是沒有錯誤的,但程式執行卻崩潰了。原因為 std string 不能接受賦值為空指標。原因為 std string 在賦值為空指標的時候,...

c 判斷指標為空 關於C中指標為空的判斷

在看c中指標是否為空的判斷說明時,出現了分歧。if ptr 如果 p 非空,則完成 if ptr 如果 p 為空,則完成 而我在林銳博士 c程式設計規範 一文中看到,為了和bool型別的判斷區分,他建議 判斷指標使用 if null ptr or if null ptr 這種方式。但是,按照 c 之...

指標,野指標,空指標,賦值?

bug中最可怕的是野指標,那麼問題來了,野指標是什麼?是如何產生的?為什麼程式設計師會 忘記 昨天除錯時,我發現了乙個野指標,由此我明白了。a的值成了亂碼,而且gcc編譯器並沒有報錯,那麼請看下面的 那麼我們假設a是指標,一旦我們如同該 一般不讓a指向元素的話,編譯器 必然是會報錯的,那麼我們不如假...