zoukankan      html  css  js  c++  java
  • 二维数组的输出--(指针输出 和 指针数组输出)

    当我第一次看见数组指针和指针数组这两个名字的时候,我以为是一个东西呢,当看到英文解释就知道这两个是不一样的了。

    指针数组:array of pointers,用于存储指针的数组,也就是数组元素都是指针

    数组指针:a pointer to an array,指向数组的指针,数组可以是任意维的

    下面举例说明:
      int a[3][4]   --->这个无需多说,就是一个二维数组。

      int (*p)[4]   --->就相当于int p[][4],它是一个二维数组的指针,可以指向一个第二维度为4的二维数组。

    直接上代码:

      1、二维数组的指针输出:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 using namespace std;
     5 int main() {
     6     int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
     7     int *p, i, j; 
     8     p = &a[0][0];     //or p = a[0];  //or  p = *(a+0);//  or p = *a;
     9     for (int i = 0; i < 3; ++i) {
    10         for (int j = 0; j < 4; ++j) {
    11             printf ("%4d", *p++);
    12         }
    13         printf ("
    ");
    14     }
    15     return 0; 
    16 }

      2、二维数组的指针数组输出:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 using namespace std;
     5 int main() {
     6     int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
     7     int (*p)[4] , i, j; 
     8     p = a;
     9     for (int i = 0; i < 3; ++i) {
    10         for (int j = 0; j < 4; ++j) {
    11             printf ("%4d", *(*(p + i) + j));
    12         }
    13         printf ("
    ");
    14     }
    15     return 0; 
    16 }

      3、输入输出任意行的二维数组:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 using namespace std;
     5 void input (int *a, int m, int n) {
     6     printf ("请输入%d行,%d列的二维数组:
    ", m, n);
     7     for (int i = 0; i < m; ++i)
     8         for (int j = 0; j < n; ++j)
     9             scanf ("%d", a + i * n + j);   // or  scanf ("%d", &a[i*n+j]);
    10 }
    11 void print (int *a, int m, int n) {
    12     for (int i = 0; i < m; ++i) {
    13         for (int j = 0; j < n; ++j)
    14             printf ("%4d", *(a + i * n + j));  //or  printf ("%4d", a[i * n + j]);
    15         printf ("
    ");
    16     }
    17 }
    18 int main() {
    19     int a[2][4], b[3][3];//两个数组可以设置为最大值,认为输入大小
    20     input (*a, 2, 4); //or input (a, 2, 4); // or input (a[0], 2, 4);  //or  input (a[0][0], 2, 4)  //////input (a, 2, 4) 不行的哦;
    21     input (*b, 3, 3);
    22     printf("数组a:
    ");
    23     print (a[0], 2, 4);
    24     printf ("数组b:
    ");
    25     print (b[0], 3, 3);
    26     return 0;
    27 }
    28 
    29 /*
    30 请输入2行,4列的二维数组:
    31 1 2 3 4
    32 5 6 7 8
    33 请输入3行,3列的二维数组:
    34 1 2 3
    35 4 5 6
    36 7 8 9
    37 数组a:
    38    1   2   3   4
    39    5   6   7   8
    40 数组b:
    41    1   2   3
    42    4   5   6
    43    7   8   9
    44 */

      差不多了,再遇到值得记录的了再加。

  • 相关阅读:
    存储过程使用收集
    网站伪静态技术(网页伪静态化)
    鼠标拖动层
    Oracle系统中用户权限的赋予,查看和管理(3)
    数据库中的锁查询及相关关系
    undo 管理
    grant 和 REVOKE权限
    Oracle系统中用户权限的赋予,查看和管理(2)
    了解数据库不同启动
    Oracle系统中用户权限的赋予,查看和管理(注意点)(4)
  • 原文地址:https://www.cnblogs.com/Ddlm2wxm/p/5747230.html
Copyright © 2011-2022 走看看