什麼是指針:
指針是一個特殊的變量,它裡面存儲的數值被解釋成為內存裡的一個地址。通過指針我們可以直接對內存進行操作。
什麼是地址:
比如你要給你朋友寄快遞,在寄東西的時候是不是要填寫地址,通過地址你的東西才能送到朋友手裡。同理,比如你定義一個變量為i。
而這個變量i是存在計算機內存中的,也就是i在這個內存中的編號,即地址。
舉例:
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a ; //定義了一個整型變量 a int *p ; //定義了一個整型指針p, *代表變量P是一個指針 p=&a; //將變量a的地址取出 在賦給變量P 這樣P保存的內存地址就是a的地址 &符號是取地址符 cout << "變量a地址:"<< &a << endl; cout << "指針p地址:" << p << endl; cin.get(); return 0; }
圖解:
可以發現指向的地址是一樣的
空指針!:
指針是用來保存內存地址的變量,如果我們不初始化,該指針就是一個失控指針,它可以指向內存中的任何地址。所以記得要初始化。
一般定義的時候初始化都是為0。
int *p ; p=0; //為0 /* 下一句的寫法就是上一句合並的寫法 一般寫法上按照下一句寫法 */ int *p=0; //初始化為0
用指針來訪問存儲值:
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int love = 520; //定義一個int類型變量love 初始化值為520 int *gril = 0; //定義一個int指針gril 初始化值為 0 gril = &love; //用指針變量gril來保存變量love的地址 cout << "gril值:" << *gril << endl; //輸出為520
cin.get(); return 0; }
其中 cout << "gril值:" << *gril << endl;
這裡*gril因為保存的是love變量的地址,因此輸出520
容易錯誤的筆記:
對於指針,最容易混淆的概念是:指針內存地址和指針地址值!!!
搞的我腦殼有點暈了 筆記暫時做到這了。。。。。