C語言進階(二):指針與指針變量
1 指針與指針變量
1.1 區別
牢記三句話:
指針就是地址,地址就是指針;指針變量是一個變量,它保存了基本類型變量的地址。
如果指針變量p保存了變量a的地址,那麼稱作p指向了a,*p 就是變量a。
如果p是一個指針變量,*p 表示了以 p 的內容爲地址的變量,就是p指向的變量。
C++實例
int a ; //定義int類型變量
int *p = &a; //變量 p 是一個 int* 類型的一級指針變量,&是取地址符,p保存了a 的地址
cout << *p <<endl; //輸出 p 指向變量的值,即輸出a的值
cout << p << endl; //輸出 p 的值,即輸出變量a在內存中的地址
int **q; //定義二級指針變量
q = &p; // 二級指針變量q保存了一級指針變量p的地址
cout << q <<endl; //輸出指針變量p在內存中的地址
cout << *q << endl; //輸出q指向變量的值,即變量p的值,即a的地址
cout << **q << endl; //可以這樣理解 cout<<*(*q), 等價於 cout <<*p, 即輸出a的值
1.2 指針的作用
直接訪問硬件
快速傳遞數據(指針表示地址)
返回一個以上的值返回一個(數組或者結構體的指針)
表示複雜的數據結構(結構體)
方便處理字符串
指針有助於理解面向對象
1.3 *號的三種含義
(1)數學運算符
i = 3 * 5;
(2)定義指針變量
int* i
(3)指針運算符(取值):
*p // 取p的內容(地址))在內存中的值