关于#c语言#的问题:pw函数是怎么执行的

#include <stdio.h>void  pw(int (*p)[4], int  n){   int i;      p=p+1;      for(i=0;i<n;i++)     printf("%d\n",*(*p+i));}void main(){      int A[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};      pw(A,4);}

pw函数是怎么执行的?

img

注释了一下,如下:


#include <stdio.h>
void  pw(int (*p)[4], int  n){ 
  int i; 
      
  //因为p为指向4个int型数组的指针,
  //p+1即在数组A第一个数字的地址开始往后移动4个int型数字长度,即指向数组下标为(0+4)的数字-'5' 
    p=p+1;
  for(i=0;i<n;i++)   //然后循环往后打印四个整数  
  // p为指向4个int整数数组的指针,*p则为指向int的指针,+i就是在*p指向的整数-'5',往后偏移几个整数 
//*(*p+i)就是打印指向的这个整数 
      printf("%d\n",*(*p+i));  
}
int  main(){   
   int A[3][4]={
   1,2,3,
   4,5,6
   ,7,8,9,
   10,11,12}; 
      
    pw(A,4); //调用pw函数,传入二维数组开始的地址A,即打印几个数-4 
}