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 ",p[i]);        
        printf("%d ",*p++);         //两行同样效果
    }

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

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


    return 0;
}
原文地址:https://www.cnblogs.com/hemage/p/13256894.html