• c语言之指向二维数组元素的指针变量


    如何使用指针对二维数组进行遍历?

    首先我们需要明确的是:二维数组在内存中是连续的,比如一个二维数组int a[2][3]={1,2,3,4,5,6},可以视作是两个一维数组构成的,即int a0[3] ={1,2,3},int a1[3] = {4,5,6},我们知道,一维数组在内存中是连续的一块内存,并且数组名a0,a1代表的就是该数组首元素的地址,而正因为二维数组的内存中的地址也是连续的,所以a1的首元素的地址就为a0数组首元素的地址+a0中元素的个数,因此,我们就可以通过让指针不断+1来访问其中的每一个元素,不用再考虑行与列的限制。

    #include<stdio.h>
    #include<iostream>
    
    //利用指针来遍历二维数组
    void printArr(int *p,int m,int n) {
        for (int i = 0; i < (m * n); i++) {
            if (i != 0 && i % n == 0) {
                printf("
    ");
            }
            printf("%d ", *(p + i));
        }
        putchar('
    ');
    }
    
    int main() {
        int a[2][3] = { {1,2,3},{4,5,6} };
        int m = sizeof(a) / sizeof(a[0]);
        int n = sizeof(a[0]) / sizeof(a[0][0]);
        printf("数组的行:%d 数组的列:%d
    ",m, n);
        printArr(a[0],m,n);
        system("pause");
        return 0;
    }

    输出:

     需要注意以下几点:

    (1)使用int m = sizeof(a) / sizeof(a[0]); int n = sizeof(a[0]) / sizeof(a[0][0]);来获取数组的行与列。

    (2)传入printArr中的是二维数组首元素的地址,也就是第一个一维数组的首元素的地址,也就是其名字。

    (3)遍历时让指针p一直向后移动到二维数组的末尾,可以看做将二维数组展开成一维数组,再计算移动的次数。

    (4)当访问到的位置是列的整数倍时,进行换行,方便显示。

  • 相关阅读:
    Excel.Application使用手册
    VMwareworkstationfull9.0.1894247+汉化补丁(2013.1.22)+有效密钥
    3个月ESET全系列产品试用用户名和密码
    各大安软官方卸载工具
    MDX语法学习filter与iif的使用
    SET XACT_ABORT 用法
    wcf传输List<t>
    存储过程中SELECT与SET对变量赋值
    SQL Server 定时备份数据库(作业)
    数据仓库MDX实际应用
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12120432.html
Copyright © 2020-2023  润新知