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

nt1979發表於2021-09-09

簡單C指標

指向整數的指標,以及指標的指標

myhaspl@myhaspl:~ % vim test1.c

#include <stdio.h>

int main(void){

        int x;

        x=128;

        int *myp=&x;

        int **mypp=&myp;

        printf("x:%dn",x);

        printf("myp:%un",myp);

        printf("mypp:%un",mypp);

        return 1;

}

上面程式定義了一個int型的整數,然後定義了2個指標,1個是myp,另1個是mypp。

myp和mypp都是指標變數,但指向的內容是不同的,myp指向x的地址,mypp指向myp的地址,透過myp可以找到x,而透過mypp則不能立即找到x,mypp先找到myp,然後再透過myp找到x,因此,mypp也稱為指標的指標。

myhaspl@myhaspl:~ % make

cc test1.c -o mytest

myhaspl@myhaspl:~ % ./mytest

x:128

myp:4294957796

mypp:4294957784

myhaspl@myhaspl:~ % 

透過解引用運算子*提取指標指向的內容。

myhaspl@myhaspl:~ % ./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:%dn",x);

        printf("myp:%un",myp);

        printf("mypp:%un",mypp);

        printf("*myp:%dn",*myp);

        printf("**mypp:%un",**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:%dn",x);

        printf("myp:%un",myp);

        printf("mypp:%un",mypp);

        printf("*myp:%dn",*myp);

        printf("**mypp:%un",**mypp);

        printf("*mypp:%u-myp%un",*mypp,myp);

        return 1;

}

                                                  

程式執行結果:看最後1行

myhaspl@myhaspl:~ % ./mytest

x:128

myp:4294957796

mypp:4294957784

*myp:128

**mypp:128

*mypp:4294957796-myp4294957796

myhaspl@myhaspl:~ % 

©著作權歸作者所有:來自51CTO部落格作者myhaspl的原創作品,如需轉載,請註明出處,否則將追究法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2819711/,如需轉載,請註明出處,否則將追究法律責任。

相關文章