C Language Study,languagestudy

來源:互聯網
上載者:User

C Language Study,languagestudy

指標形式和下標形式

A> char *p = "abcdef";//定義一個字串,用一個指標指向這個字串

B>char a[] = "123456";//定義一個字元數組 a 是數組首元素的首地址,而不是數組的首地址

在上面的A>定義中,假如我們要取出c這個字元,那麼有以下兩種方法:

<1> 指標的形式:*(p+3)

<2>下標的形式:p[3]

兩種方式,我們都可以這個進行理解:

編譯器首先計算出p的值,也就是p所儲存的地址值,然後加上位移量3,得到一個新的地址,

然後再取出這個新地址裡面所儲存的資料,也就是字元c

例如,可以寫出以下程式輸出A>中定義的字串。

#include <stdio.h>int main(void){    char *p="abcdef";//A>    int iOffset = 0;    for(iOffset=0;iOffset<strlen(p);iOffset++)        printf("%c",*(p+iOffset));    return 0;}
同理,在B>的定義下,假若我們要取出5這個資料,也有兩種方法:

<1>指標的形式:*(a+4) ;此時,a代表的是數組首元素的首地址,然後用這個地址加上位移量,

得到一個新的地址,再從這個地址取出資料

<2>下標的形式:a[4];一樣。


值得注意的是,不知道你發現沒有,上面所說的位移量,有一個問題,在取出基地址(A>中的p值,B>中的a地址)後,

所加的位移量應該是位移數X每個元素的大小。上例中因為字元類型的記憶體大小剛好為1,所以很容易產生誤導。特別注意!




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.