天天看點

指向數組的指針

版權聲明:您好,轉載請留下本人部落格的位址,謝謝 https://blog.csdn.net/hongbochen1223/article/details/45607145

指向數組的指針變量成為數組指針變量。一個數組是由連續的一塊記憶體單元組成的。數組名就是這塊連續記憶體單元的首位址。

該執行個體我們實作了使用數組的指針引用數組,利用數組名以及下标引用數組等。

其中,使用數組的指針和數組的下标來周遊數組的時候可能不太容易了解,但是我已經在注釋中說明清楚了。

下面附上我的代碼:

#include <stdio.h>

/**
 * 本執行個體實作通過指向數組的指針引用數組,
 * 利用數組名以及下标引用數組等
 * @brief main
 * @return
 */
int a[]={1,2,3,4,5};
#define N sizeof(a)/sizeof(a[0])

int main(void)
{
    int j; //遊标變量
    int *p; //指針變量

    //利用數組名和下标順序通路數組元素
    for(j = 0;j < N;j++){
        printf("a[%d]\t= %d\t",j,a[j]);
    }
    printf("\n");

    //讓指針順序指向數組的各元素,周遊數組
    for(p = a;p < a+N;p++){
        printf("*p\t= %d\t",*p);
    }
    printf("\n");

    //指針和遊标變量結合,改變遊标變量周遊數組
    for(p = a,j = 0;p+j<a+N;j++){
        printf("*(p+%d)\t= %d\t",j,*(p+j));
    }
    printf("\n");

    //指針和遊标變量結合,用指針和下标周遊數組
    for(p=a+N-1,j=N-1;j>=0;j--){
        /**
         * 這個地方剛開始一直沒有看懂,後來明白了
         * 當p=a+N-1時,就已經将該位置當作下标為0了
         * 是以,其前一個元素就是a[-1]也就是4
         */
        printf("p[-%d]\t= %d\t",j,p[-j]);
    }
    printf("\n");

    return 0;
}
           

下面是我的程式運作的結果截圖:

繼續閱讀