2009年8月30日 星期日

C語言 指標(pointer)

每次一陣子沒用之後突然需要用到,總會忘記怎麼使用。


int x, *ip;
ip = &x;
x=10;


這時候如果把一些我們關心的值印出來,很快就可以釐清其中的關係


x = 10;
x = ox1001;

ip = ox1001;
*ip = 10;


舉個容易讓我困惑的例子:


int x = 10;
int *ip = &x;


第二行如果理解成


int *ip;
ip = &x;


就比較容易懂了

簡單的總結

int *ip;

ip是一個指向int的pointer,印出來會是位址
*ip則是被ip指向的int,印出來會是該位址的值

不過*ip = 10;這種直接操作該位址的值的方式是不被允許的

你可以這麼想,

int *ip = &x;

*ip其實就是*(&x),也就是x啦