指针数组例解

来源:互联网 发布:ws15发动机知乎 编辑:程序博客网 时间:2024/06/02 02:25
#include <stdio.h>


int main()
{
    void add(int (*p)[3]);
    int a[2][3]={{1,2,3}, {4,5,6}};
    add(a + 1);
    
    int i;
    for (i = 0; i < 3; i++)
    {
        printf("1%p \n",*(a + 1) + i);
    }
    return 0; 
}


void add(int(*p)[3])
{
    int i;
    for(i = 0;i < 3; i++)
    {
        printf("2%p \n",*p + i);
    }


}


/*
int(*p)[3] : 定义一个指针数组,指向int型;
通俗讲就是定义了数组p[3]里面存放的是地址,而地址所指向的值是整型
其作为函数参数,赋值实参时add(a + 1)后,可理解为。函数p[3]中3个元素
都赋予了数组a中的第2行中的三个元素依次的地址(重点是赋值的地址而不是其中的元素);
这是p与a的联系解建立了;可以对P的取地址,加减等操作来间接访问a;
*/