首页 > 其他 > 详细

二维数组的行列指针

时间:2014-04-20 09:38:38      阅读:523      评论:0      收藏:0      [点我收藏+]

行指针原理

    我们现在想定义一个指针,使得这个指针有这样的特性—— 指针 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]


示例代码

bubuko.com,布布扣
 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 }
View Code

二维数组的行列指针,布布扣,bubuko.com

二维数组的行列指针

原文:http://www.cnblogs.com/TaoyzDream/p/3675625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!