2010年9月1日 星期三

雙重指標


什麼是"雙重指標"!?
例如: "**str" <-這就是雙重指標
就用下列例子讓大家好好了解一下
#include<iostream>
using namespace std;
int main() {
    int p = 10;
    int *ptr1 = &p;
    int **ptr2 = &ptr1;

    cout << "p的值:" << p << endl;
    cout << "p的記憶體位置:" << &p << endl;

    cout << endl;
    cout << "*ptr1 = " << *ptr1 << endl;
    cout << "ptr1 = " << ptr1 << endl;
    cout << "ptr1的記憶體位置:" << &ptr1 << endl;

    cout << endl;
    cout << "**ptr2 = " << **ptr2 << endl;
    cout << "*ptr2 = " << *ptr2 << endl;
    cout << "ptr2 = " << ptr2 << endl;

    cout << endl;
    cout << "整理:" << endl;
    cout << "&p = " << &p << "\t\t" << "ptr1 = " << ptr1 << endl;
    cout << "&ptr1 = " << &ptr1 << "\t" << "ptr2 = " << ptr2 << endl;

    return 0;
}

執行結果:
p的值:10
p的記憶體位置:0x22ff74
*ptr1=10
 ptr1=0x22ff74
 ptr1的記憶體位置:0x22ff70
**ptr2=10
 *ptr2=0x22ff74
  ptr2=0x22ff70
整理:
&p=0x22ff74        ptr1=0x22ff74
&ptr1=0x22ff70     ptr2=0x22ff70
怕有人還是看不懂,所以用圖再解釋一次

這樣大家應該就比較瞭解了吧!

沒有留言: