c++指標詳細解說?

c++指標主要包括一下四個方面:

1、變數指標

2、函式指標

3、類內部變數指標

4、類內部函式指標

指標又可以稱謂地址,在32位的CPU上,CPU一般是由32根地址線組成,所以地址的大小佔用32位即4個位元組,同理可以推算出指標的大小佔用4個位元組;

但是指標卻又不同於地址,豐富於地址,用公式來說明:

“指標” = “指標所代表的地址” + "地址內資料的資料型別";

暫時只列提綱,內容會逐漸增加

工具/原料

win7 x64

Visual Studio 2013

變數指標

int* pnPointer;

定義一個變數指標 pnPointer, 佔用的記憶體大小為4個位元組,pnPointer沒有被初始化。

int pnValue[10];

定義一個數組,陣列的起始地址指向自己,大小是 sizeof(int) * 10 = 40;

int* ppnValue[10];

指標陣列,可用來存在指標(地址)的陣列;

相鄰的兩個元素的地址間隔是4

c++指標詳細解說

int (*ppnValue)[10];

二維矩陣,每行元素的數目是10個,每行位元組數 10 * sizeof(int) = 40;

相鄰的兩個元素的地址間隔是 10 * sizeof(int) = 40;

c++指標詳細解說

this 類內部一個指向自己的指標,如下圖:

可以發現 this 指標的生命週期要早於 pA 指標,this指標在建構函式產生時就已經存在,而 pA 指標只有在建構函式返回後再被賦值;

c++指標詳細解說

函式指標2

void (*fpFun)() = tst;

fpFun 的值並不等於 tst,而是 tst 的label所對應的值

c++指標詳細解說

類內部變數指標3

class A

{

public:

int a;

};

int A::*p = &A::a;

返回的是 變數a在類A中的偏移

A a;

a.*p = 3;

類內部函式指標4

class A

{

public:

void tst() {};

};

void (A::*pFun)() = &A::tst;

A a;

(a.*pFun)();

總結

地址, 變數, 指標, 位元組, 函式指標,
相關問題答案