加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:07:25 所属栏目:百科 来源:网络整理
导读:如何使用指针对二维数组进行遍历? 首先我们需要明确的是:二维数组在内存中是连续的,比如一个二维数组int a[2][3]={1,2,3,4,5,6},可以视作是两个一维数组构成的,即int a0[3] ={1,3},int a1[3] = {4,6},我们知道,一维数组在内存中是连续的一块内存,并

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

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

#include<stdio.h>
#include<iostream>

//利用指针来遍历二维数组
void printArr(int *p,int m,1)">int n) {
    for (int i = 0; i < (m * n); i++) {
        if (i != 0 && i % n == 0) {
            printf("n");
        }
        printf(%d ",*(p + i));
    }
    putchar('');
}

 main() {
    int a[2][3] = { {1,2,1)">3},{4,1)">5,1)">6} };
    int m = sizeof(a) / sizeof(a[]);
    int n = 0]) / 0][]);
    printf(数组的行:%d 数组的列:%dn,m,n);
    printArr(a[],n);
    system(pause);
    return ;
}

输出:

?需要注意以下几点:

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读