C指標原理(15)-C指標基礎
阿新 • • 發佈:2018-12-02
簡單C指標
指向整數的指標,以及指標的指標
[email protected]:~ % vim test1.c #include <stdio.h> int main(void){ int x; x=128; int *myp=&x; int **mypp=&myp; printf("x:%d\n",x); printf("myp:%u\n",myp); printf("mypp:%u\n",mypp); return 1; }
上面程式定義了一個int型的整數,然後定義了2個指標,1個是myp,另1個是mypp。
myp和mypp都是指標變數,但指向的內容是不同的,myp指向x的地址,mypp指向myp的地址,通過myp可以找到x,而通過mypp則不能立即找到x,mypp先找到myp,然後再通過myp找到x,因此,mypp也稱為指標的指標。
[email protected]:~ % make
cc test1.c -o mytest
[email protected]:~ % ./mytest
x:128
myp:4294957796
mypp:4294957784
[email protected]:~ %
通過解引用操作符*提取指標指向的內容。
[email protected]:~ % ./mytest
x:128
myp:4294957796
mypp:4294957784
*myp:128
**mypp:128
程式碼為
#include <stdio.h> int main(void){ int x; x=128; int *myp=&x; int **mypp=&myp; printf("x:%d\n",x); printf("myp:%u\n",myp); printf("mypp:%u\n",mypp); printf("*myp:%d\n",*myp); printf("**mypp:%u\n",**mypp); return 1; }
*myp提取的是x的內容
而**mypp提取的是也是x的內容
那麼*mypp提取的內容什麼呢
是myp指標變數本身的內容,即x的地址。
可修改上述程式驗證一下
#include <stdio.h>
int main(void){
int x;
x=128;
int *myp=&x;
int **mypp=&myp;
printf("x:%d\n",x);
printf("myp:%u\n",myp);
printf("mypp:%u\n",mypp);
printf("*myp:%d\n",*myp);
printf("**mypp:%u\n",**mypp);
printf("*mypp:%u-myp%u\n",*mypp,myp);
return 1;
}
程式執行結果:看最後1行
[email protected]:~ % ./mytest
x:128
myp:4294957796
mypp:4294957784
*myp:128
**mypp:128
*mypp:4294957796-myp4294957796
[email protected]:~ %