天天看點

【C++】:指針

特點: 可以儲存任何類型對象的位址

void* 指針隻支援幾種有限的操作:

1. 與另一個指針比較。

2. 向函數傳遞void* 指針或從函數傳回void* 指針。

3. 不允許使用void* 指針操縱它所指向的對象

指針和引用都可以間接通路另一個值,但是是有差別的。

1. 定義引用時沒有初始化是錯誤的

2. 引用一經初始化就始終指向同一特點對象,給引用指派時修改的是引用所關聯的對象的值,而不是使引用與另一個對象關聯。

某一指針的存儲位址,可存放在另一個指針中。

主要原因在于函數中的局部變量在函數傳回之後就會被清空,是以是傳回不出函數的。

note :對于函數*sort而言,其函數名為(*sort)是以一般調用的時候要用(*sort)(1)這樣的形式,但在c++中可以用sort(1)這個形式,c中必須用(*sort)(1)。這是對于全局函數而言的,對于類的成員函數來說就不一樣了,這個之後再講。

note :對于全局函數而言,它的名稱就是它的位址,當然直接取位址也仍然表征的是位址,是以上述代碼中會有2*2=4種調用方式。然而類的成員函數用的時候必須用取位址符,因為成員函數本質上是變量并不是函數。

note :當然這種指向函數的指針真正應用的時候會用到typedef限定符,因為這樣會比較友善易懂。調用方式如下:

int b[2][3] = { 1,2,3,21,22,23}; int* p2 = b[0]; 此時我們有 // p2[0] = b[0][0] ,p2[1] = b[0][1] ,p2[2] = b[0][2] // p2[3] = b[1][0] ,p2[4] = b[0][1] ,p2[5] = b[0][2]