前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >c语言之指向二维数组元素的指针变量

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

作者头像
西西嘛呦
发布于 2020-08-26 15:40:54
发布于 2020-08-26 15:40:54
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

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

首先我们需要明确的是:二维数组在内存中是连续的,比如一个二维数组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来访问其中的每一个元素,不用再考虑行与列的限制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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("\n");
        }
        printf("%d ", *(p + i));
    }
    putchar('\n');
}

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\n",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)当访问到的位置是列的整数倍时,进行换行,方便显示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言 二维数组和指针的一些笔记
&arr是指整个数组的首地址,而arr是指数组首元素的首地址,虽然所表示的意义不同,但二者之间的值却是相同的。
小锋学长生活大爆炸
2020/09/28
1.6K1
C语言 二维数组和指针的一些笔记
进一步理解指针2:双指针、指针数组和数组指针
1) 如果int* p,则“1”实际是sizeof(int),也就是p指向的类型大小;
一见
2018/08/10
1.5K0
进一步理解指针2:双指针、指针数组和数组指针
【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )
编译器操作 二维数组 时 , 只关心 二维数组 的整体内存结构 , 下面的二维数组 有
韩曙亮
2023/03/29
1.4K0
【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
(2)在定义指针变量时,指针变量名前的*表示现定义的是一个指针类型的变量。星号并不是指针变量名的一部分,只是一个标志
小徐在进步
2024/10/04
1950
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
计算机小白的成长历程——数组(2)
大家好,很高兴又和大家见面啦!在上一篇我们介绍了一维数组的相关内容,今天咱们要介绍的是二维数组的相关内容。
蒙奇D索隆
2023/10/13
2550
计算机小白的成长历程——数组(2)
【C语言】一维数组和二维数组
type_t arr_name [const_n] type_t-----数组元素类型 arr_name-----数组名 [const_n]----- 是一个常量表达式,用来指定数组大小
YoungMLet
2024/03/01
1710
认识一维数组与二维数组
本章讲述暂时只讨论一维数组和二维数组;多维数组(二维及二位以上),数组作为函数参数等章节不参与此次讨论,但会在能力范围内讲的明白。感谢观看(本人为技术萌新,只讨论在实践过程中的心得,如有问题请及时指出)
用户11367452
2024/11/21
1860
认识一维数组与二维数组
【c语言日寄】二维数组的深度解构
在C语言中,数组是一种非常基础且重要的数据结构。然而,许多初学者对二维数组的本质理解不够深入,导致在使用时出现各种问题。本文将通过一个简单的程序引入,深入分析二维数组的本质,并探讨其注意事项,帮助读者更好地理解和掌握二维数组。
siy2333
2025/03/04
740
c语言二维数组
初始化和打印方式: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void test() { //赋值打印方式 //1. int arr[2][3]; arr[0][0] = 1; arr[0][1] = 2; arr[0][2] = 3; arr[1][0] = 4; arr[1][1] = 5; arr[1][2] = 6; //2. int arr1[2][3] = { {1,2,3}, {4,5,6},//最后一行末
大忽悠爱学习
2021/03/02
1.1K0
c语言二维数组
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
走在努力路上的自己
2024/01/26
5730
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
二维数组与指针复习
最近在练习C语言计算机二级的程序设计题,碰到了二维数组和指针的结合,当时怎么调试都不对,自己也记不清楚该怎么用了就跑去看书翻资料重新复习。 本次复习看的讲解:点击访问
布衣者
2021/09/07
3780
进一步理解指针:一维数组和二维数组转换
要知道这个输出,最关键的是要理解指针操作的“加”和“减”,假设有一指针ptr,则“ptr”中的“1”是指ptr所指类型的大小。因此上述代码中的“&m+1”中的“1”实质是“sizeof(m)”,而后一个“1”则“sizeof(m[0])”。 为什么“&m+1”中的“1”是“sizeof(m)”?根本原因在于“&a”实际是一个二维数组“int (*)[5]”的首地址,而不是一维数组“int [5]”的首地址,看下面这段代码就容易理解:
一见
2019/03/14
1.3K0
指针与二维数组的结合运用
在学习这一知识点时,我也下了很多功夫,经过反复的思考和查阅,我把我掌握的分享给大家,希望对大家能够有帮助,最后我还出了一些题,能够帮助大家对这一知识点更好的理解。如果有解释不对的地方还请大家指正。不懂的地方可以问我,我会耐心回答的。我能理解求知识的急迫心情。
用户8639654
2021/07/26
4700
一维数组与二维数组———详细解读及一些注意事项
这里注意一点,在C99标准里有变长数组的概念,所谓变长数组并不是指数组会变长,而是指用整型变量或表达式声明或定义的数组。如下所示:
诺诺的包包
2023/02/17
5820
一维数组与二维数组———详细解读及一些注意事项
【C语言】二维数组
    前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组
TANGLONG
2024/10/15
1290
【C语言】二维数组
【C语言】二维数组
练习1:一个学习小组有 5 个人,每个人有三门课的考试成绩。求全组分科的平均成绩和 各科总平均成绩。
謓泽
2022/12/12
1.8K0
【C语言】二维数组
c语言进阶指南(1)(数组)
从这里开始,我们会经常分析代码在内存中的分布形式,正所谓新手看代码,高手看内存。这也是我将这个专栏划分为进阶篇的原因,从这里开始,我们将会经常在内存层面分析代码的作用。
代码小豪
2024/06/05
2100
数组指针 行指针 列指针
我们把指向数组的指针叫做数组指针,后面还会学到指针数组,这两个是不一样的,根据中学语文偏正词组的知识可以知道,前者是指针,后者是数组。
叶茂林
2023/07/28
1590
c语言之使用指针*和地址&在二维数组中表示的含义
假设有这么一个数组:int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}}
西西嘛呦
2020/08/26
1.4K0
二维数组的探究
二维数组本质还是一维数组,数组中的每一个元素都是数组,这些元素具有相同的属性。既然是数组类型,其具备两个条件:1.数组元素的个数;2.数组元素的类型 验证二维数组本质是一维数组:
lexingsen
2022/02/24
5560
二维数组的探究
推荐阅读
相关推荐
C语言 二维数组和指针的一些笔记
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文