1. 程式人生 > >c/c++指標以及二級指標的理解

c/c++指標以及二級指標的理解

指標即是用來指向變數地址的一種工具,其本質還是一個變數

 

指標和普通變數之間的異同;

1.不同之處:

             指標使用來儲存地址的變數,而普通變數則是用來儲存數值的變數,兩者在定義的時候計算機都會為其分配記憶體。

2.相同之處:

             兩者都是變數都是用來儲存值,只不過儲存值得型別不同而已。

論證:

int a=5;//表明了a是一個數據型別為in行的變數(非指標)該變數只能夠儲存整形資料即:1,2,3,4,5等,假設a的記憶體為&a=008fc30;

int *p=NULL;//表明了p的資料型別是int *型即是一個指標並且該指標初始化為空(指標在定義的時候往往要進行初始化以免在後續操作中將沒有初始化的指標進行解引用即*p運算這樣會出錯),假設p指標的記憶體為&p=007fc56;

p=&a;//將a的地址賦值給p指標

cout << "a:" << a << endl;   

 cout << "p:" << p << endl;

輸出:

a:5

p:008fc30

兩者都是列印輸出變數所儲存的值而a是一個整形變數則列印輸出其值5,p是一個整形指標用來儲存地址的變數列印其值得到的是a的地址即008fc30。

緊接著:在定義一個二級指標:

              二級指標:二級指標也就是指標的指標說白了就會用來儲存一級指標的地址的變數。

            一級指標與二級指標區別:一級指標使用來儲存普通變數的地址的變數而二級指標則是用來儲存一級指標的地址的變數(指標只能儲存地址)

int **q=null;//假設q的地址為006fc56

q=&p     / /將p的地址儲存在一個二級指標q中
    cout << "q:" << q << endl;
    cout << "p:" << p << endl;

輸出結果:

q:007fc56

p:008fc30

兩者都是列印輸出指標變數的值(地址)。

  下面說說指標的解引用(*)

 *(指標名):代表取指標所儲存的地址所對應的變數的值;

例如:

*q代表了取q中儲存的地址(p的地址)所對應的值(p中的值也就是a的地址)。

完整程式碼:

多級指標原理相同自行體會。

轉載請標明原貼出處:https://blog.csdn.net/zj490044512