1. 程式人生 > >C指標原理(15)-C指標基礎

C指標原理(15)-C指標基礎

簡單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]:~ %