天天看點

C語言定義數組指針的三種方法

C語言定義數組指針的三種方法

C語言中有一種文法叫做數組指針,就是使用一個指針變量指向一個數組,然後對數組進行通路操作.

下面給出代碼示例定義的方法, 代碼如下:

#include<stdio.h>

int main(){

    //定義數組指針的第一種方法
    {
        printf("=====================================\n");
        int (*p)[] = NULL;
        int arr[] = {,,,,};
        p = &arr;
        int num = sizeof(arr)/sizeof(arr[]);
        for(int i = ; i < num; i ++){
            //printf("%d\n",*p[i]);
            //printf("%d\n",p[i]);
            printf("%d\n",(*p)[i]);

        }
    }

    //定義數組指針的第二種方法
    {
        printf("=====================================\n");
        typedef int (typeArray)[];
        int arr[] = {,,,,};

        typeArray *p = NULL;
        p = &arr;
        int num = sizeof(arr)/sizeof(arr[]);
        for(int i = ; i < num;  i++){
            printf("%d\n",(*p)[i]);
        }

    }

    //定義數組指針的第三種方法
    {
        printf("=====================================\n");
        typedef int (*typeArray)[];
        int arr[] = {,,,,};

        typeArray p = NULL;
        p = &arr;
        int num = sizeof(arr)/sizeof(arr[]);
        for(int i = ; i < num;  i++){
            printf("%d\n",(*p)[i]);
        }
    }

    return ;
}
           

我們通過上面的代碼可知, 這三種方式通過數組指針來通路數組元素——-(*p)[i]

如果printf(“%d\n”,p[i]) 那麼列印的是數組的首元素位址 ,接下來也是位址—–該數組的首位址加上該數組的長度,………. .例如:該數組的元素首位址是10000那麼,接下來的位址是10020, 10040,10060…….

因為進行了p=&arr的指派,而&arr代表整個數組的指派

那麼列印語句printf(“%d\n”,*p[i])列印的是上面所說位址的内容.即10000,10020,10040…… 處的内容

繼續閱讀