指針是一個(gè)變量,其值為另一個(gè)變量的地址,即內(nèi)存位置的直接地址。在使用指針存儲(chǔ)其他變量地址之前,必須對(duì)其進(jìn)行聲明。通過指針,可以簡(jiǎn)化一些 C++ 編程任務(wù),另外還有一些任務(wù),如動(dòng)態(tài)內(nèi)存分配,沒有指針是無法執(zhí)行的。所以,想要成為一名優(yōu)秀的 C++ 程序員,學(xué)習(xí)指針是很有必要的。每一個(gè)變量都有一個(gè)內(nèi)存位置,每一個(gè)內(nèi)存位置都定義了可使用連字號(hào)(&)運(yùn)算符訪問的地址,它表示了在內(nèi)存中的一個(gè)地址。
實(shí)例1感受一下:
#include <iostream>using namespace std;const int max = 3;int main(){ int var1=20; int var2[max] = {1,10,100}; int *p_var1 = &var1; int *p_var2; p_var2 = var2; cout << "var1的地址:" << &var1 << endl; cout << "var2_string的地址:" << &var2 << endl; cout << "the value of var1 is:" << *p_var1 << endl; for (int i = 0; i < max; i++) { cout << "the address of var2[" << i << "]=" << p_var2<<endl; cout << "the value of var2[" << i << "]="<<*p_var2<<"/n"<<endl; p_var2++; } return 0;}運(yùn)行結(jié)果:

實(shí)例1中,p_var2++實(shí)現(xiàn)了指針的遞增運(yùn)算。
實(shí)例2:
#include <iostream>using namespace std;const int max = 3;int main(){ char *PRoverb[] = { "pxx", "sr", "my", "lx" }; char *gr = "ur lv is:"; int choice = 0; cout << "pls chose a num from 1 to 4" << endl; cin >> choice; if (choice >= 1 && choice <= 4) cout << gr << proverb[choice - 1]; else cout << "sorry,the choice is not in the range" << endl; return 0;}運(yùn)行結(jié)果:

實(shí)例2中,*proverb是一個(gè)指針數(shù)組。指針和數(shù)組是密切相關(guān)的。事實(shí)上,指針和數(shù)組在很多情況下是可以互換的。例如,一個(gè)指向數(shù)組開頭的指針,可以通過使用指針的算術(shù)運(yùn)算或數(shù)組索引來訪問數(shù)組。
實(shí)例3:
#include <iostream>using namespace std;int main(){ int var; int *ptr; int **PPTr; var = 3000; // 獲取 var 的地址 ptr = &var; // 使用運(yùn)算符 & 獲取 ptr 的地址 pptr = &ptr; //獲取地址 cout << "address of var:" << &var << endl; cout << "address of ptr:" << &ptr << endl; cout << "address of pptr:" << &pptr << endl; // 使用 pptr 獲取值 cout << "Value of var :" << var << endl; cout << "Value available at *ptr :" << *ptr << endl; cout << "Value available at **pptr :" << **pptr << endl; return 0;}運(yùn)行結(jié)果:
實(shí)例3中定義了一個(gè)指向指針的指針。
實(shí)例4:
#include <iostream>using namespace std;double getAverage(int *arr, int size);int main(){ int balance[5] = { 1000, 2, 3, 17, 50 }; int *ptr = balance; double avg; // 傳遞一個(gè)指向數(shù)組的指針作為參數(shù) avg = getAverage(ptr, 5); cout << "Average value is: " << avg << endl; return 0;}double getAverage(int *arr, int size){ int i, sum = 0; double avg; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = double(sum) / size; return avg;}實(shí)例4傳遞指針給函數(shù),同樣此時(shí)也可以使用數(shù)組給函數(shù)。參考:http://www.runoob.com/cplusplus/cpp-pointers.html
http://wenku.baidu.com/link?url=HRLn_BwrA6ctsrmNRXMYN_JakFgtWn8L5jwarlNnagViX_qfm4po8Maw1FhU1iBKXWe1x-qGD5lUw21OQD6W1qlWLoAp7gGG0eq6d4OL92G
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注