C语言-用指针操作二维数组:程序填空

13
#include <stdio.h>
#include <stdlib.h>
void sub(int (*p)[3]){
    int i;
    for(i=0;i<6;i++){
        *(*p+i) =  *(*p+i) *  2;
    }
}
int main()
{
    int a[2][3];
    int (*p)[3]=a;  //定义指针变量并赋初值
    scanf("%d",a[0]) ; //输入a[0][0]的值,利用数组名表示a[0][0]    (用下标法)

     scanf("%d",a[0]+1) ; //输入a[0][1]的值,利用数组名表示a[0][1]    (用指针法)

     scanf("%d",&p[0][2]) ; //输入a[0][2]的值,利用指针变量表示a[0][2]   (用下标法),  此处的指针变量是指向变量的

     scanf("%d",*(p+1))  ; //输入a[1][0]的值,利用指针变量表示a[1][0]   (用指针法), 此处的指针变量是指向变量的

      scanf("%d",&p[1][1]) ; //输入a[1][1]的值,利用指针变量表示a[1][1]     (用下标法), 此处的指针变量指向一维数组

    scanf("%d",(*(p+1)+2)) ; //输入a[1][2]的值,利用指针变量表示a[1][2]    (用指针法), 此处的指针变量指向一维数组

    sub(a); //调用sub函数,使每个数据翻番
    int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<3;j++){
            printf("%d ",*(*(p+i)+j));
        }
    }
    /*for(p=a;p<12;p++)     //输出所有数据,要求用最快的方法
          printf("%d",*p); 错误*/
    return  0;
}