#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函数是怎么执行的?
注释了一下,如下:
#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
}