int a=5,b=10;
int *ptr1,*ptr2;
ptr1=&a;
ptr1存放a的位址,而且*ptr1依址取值也等於a的值5;而且由於ptr1存放a的位址,*ptr1依址取值也等於a的值,因此*ptr1的值改變也等於a的值改變。
ptr2=&b;
ptr2存放b的位址,而且*ptr2依址取值也等於b的值10;而且由於ptr2存放b的位址,*ptr2依址取值也等於b的值,因此*ptr2的值改變也等於b的值改變。
*ptr1=7;
*ptr1現在的值是7,所以因為ptr1存放a的位址,*ptr1依址取值也等於a的值,因此*ptr1的值變成7也等於a的值變成7。
*ptr2=32;
*ptr2現在的值是32,所以因為ptr2存放b的位址,*ptr2依址取值也等於b的值,因此*ptr2的值變成32也等於b的值變成32。
a=17;
因為ptr1存放a的位址,*ptr1依址取值也等於a的值,因此a的值變成17也等於*ptr1的值變成17。
ptr1=ptr2;
由於ptr2存放b的位址,現在把ptr2指定給ptr1,代表ptr1也從參考a的位址變成參考到b的位址,所以*ptr1=b位址的值32,a的值依然沒變。
*ptr1=9;
由於ptr1也從參考a的位址變成參考到b的位址,因此*ptr1=9代表b的值也變成9,而ptr2存放b的位址,*ptr2依址取值也等於b的值,所以*ptr2也變成9。
ptr1=&a;
現在ptr1又改存放a的位址,參考a的位址,上述講到a的值依然沒變是17,因此*ptr1也=17。
a=64;
因為ptr1存放a的位址,*ptr1依址取值也等於a的值,因此a的值變成64也等於*ptr1的值變成64。
*ptr2=*ptr1+5;
*ptr1+5=64+5=69,因此*ptr2=69,由於ptr2存放b的位址,*ptr2依址取值也等於b的值,因此*ptr2的值變成69也等於b的值變成69。
ptr2=&a;
ptr2又改存放a的位址,參考a的位址,由於a的值目前是64,因此*ptr2依址取值也等於a的值64,b的值一樣維持69。