C 指標比較的含義

2021-05-25 05:14:34 字數 595 閱讀 7191

這個問題我是在《c++必知必會》條款28裡面看到的。c++指標比較的不是位址,而是物件同一性問題。即指標位址可以不同,而比較的結果卻相同,因為它們指向的是同乙個物件。這個問題用多重繼承比較直觀:

#include

2:
3:

using

namespace std;

4:
5:

class a ;

8:
9:

class b ;

12:
13:

class c: public b, public a ;

16:
17:

int main()

18:
26:

if (pc == pb)

27:
30: }

在我機器上執行的結果如下:

0043ef94 = 0043ef90

0043ef90 = 0043ef90

請按任意鍵繼續. . .

由此可以看出,指標比較的不是位址,而是物件同一性。

C 必知必會 指標比較的含義

c 指標比較的不是位址,而是物件同一性問題。即指標位址可以不同,而比較的結果卻相同。這個問題用多重繼承比較直觀 存在乙個從子類到任乙個基類的預定義轉化。乙個基類的指標是與其派生類的指標 的,並不是因為位址相同而是型別相同,因為派生類就是基類,就像班長就是學生一樣。這從更抽象的乙個層次來對待指標 乙個...

C 淺說指標比較

對於一些普通的值比較,如下 int v1 4 int v2 4 int v3 5 則v1 v2 為true v1 v2 為false v1 v3 為false 上面v1 v2 v3都有各自的儲存位址和值,而 v1 v2 比較的是它們的值,這裡它們的值都等於4,所以條件為真 同樣v1 v3 比較的也是...

C 直接cout指標名的含義

首先看下面這個 例項 include using namespace std int main 其輸出結果為 看到了一些例子裡面直接使用cout,剛開始感覺很疑惑,本來以為直接輸出該指標,結果輸出的是指標所指向的記憶體中存放的內容,直到讀到 0 結束標誌結束。後來查資料發現這是編譯器所預先設定的規則...