行指针原理:
我们现在想定义一个指针,使得这个指针有这样的特性—— 指针 p指向arr[0], 指针 p+1 指向arr[1] ,指针 p+2指向arr[2], 也就是指针每移动一个单位的地址就指向下一个一维数组,那么这个指针必须满足下面二个条件:1、必须是整型 2、必须每移动一个单位的地址时实际上移动一个一维数组的长度即3个整型量。
int data[3][4];
行指针:int (*p)[4];
初始化:p = a;
p = &a[0];
引用: p[i][j]
列指针:int *p;
初始化:p = a[0];
p = *a;
p = &a[0][0];
引用: p[i*4+j]
示例代码
1 #include <stdio.h> 2 3 void fun(int *p, int row, int col); 4 void fun1(int (*p)[5], int row); 5 6 int main() 7 { 8 int a[3][5]; 9 10 for (int i=0; i<3; i++) 11 { 12 for (int j=0; j<5; j++) 13 { 14 a[i][j] = i*5+j; 15 } 16 } 17 18 fun(a[0], 3, 5); 19 20 fun1(a, 3); 21 22 return 0; 23 } 24 25 void fun(int *p, int row, int col) 26 { 27 for (int i=0; i<row; i++) 28 { 29 for (int j=0; j<col; j++) 30 { 31 printf("%d", p[i*col+j]); 32 } 33 printf("\n"); 34 } 35 36 getchar(); 37 } 38 39 void fun1(int (*p)[5], int row) 40 { 41 for (int i=0; i<row; i++) 42 { 43 for (int j=0; j<5; j++) 44 { 45 printf("%d", p[i][j]); 46 } 47 printf("\n"); 48 } 49 50 getchar(); 51 }
原文:http://www.cnblogs.com/TaoyzDream/p/3675625.html