C 指针访问数组


#include<stdio.h>

int main(void)
{
    int li[2][3] = {
        {1,2,3},
        {11,22,33}
    };
    int *p;

    //第一种
    p = &li[0][0];
    for(int i = 0; i < 6; i++)
    {
        //printf("%d\n",p[i]);        
        printf("%d\n",*p++);         //两行同样效果
    }

    //第二种
    for(p = li[0]; p < li[0] + 6; p++)
    {
        printf("%d\n",*p); 
    }

    //第三种
    int (*pi)[3];       //定义一个指针数组,里面的每个元素对应二维数组的一行
    pi = li;
    for(int i = 0; i < 2; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            printf("%d\n",pi[i][j]); 
        }
    }
    printf("%d,%d,%d,%d,%d,%d\n",pi,*pi,pi[0],li[0],&li[0],**pi); 
    printf("%d,%d,%d,%d,%d,%d\n",pi+1,*(pi+1),pi[1],li[1],&li[1],**(pi+1)); 
    //所以,pi = li,和pi = &li[0]是有区别的


    return 0;
}
posted @ 2020-07-06 20:00  河马哥  阅读(244)  评论(0编辑  收藏  举报