• 二维数组的行列指针


    行指针原理

        我们现在想定义一个指针,使得这个指针有这样的特性—— 指针 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("
    ");
    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("
    ");
    48     }
    49  
    50     getchar();
    51 }
    View Code
  • 相关阅读:
    洛谷P1724 东风谷早苗
    hdu 1001 Sum Problem
    洛谷 P1006 传纸条
    codevs 6116 区间素数
    LibreOJ #101. 最大流
    洛谷 P1455 搭配购买
    LibreOJ #119. 最短路 (堆优化dijkstra)
    LibreOJ #109. 并查集
    COGS.1200 ganggang的烦恼
    uoj #15. 【NOIP2014】生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/TaoyzDream/p/3675625.html
Copyright © 2020-2023  润新知