c语言之指向二维数组元素的指针变量
时间:2022-07-24
本文章向大家介绍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("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 数组的列:%dn",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)当访问到的位置是列的整数倍时,进行换行,方便显示。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 实用!8个 chrome插件玩转GitHub,单个文件下载小意思
- LeetCode105|有序数组的平方
- LeetCode104|求根到叶子节点数字之和
- LeetCode103|路径总和II
- LeetCode102|二叉树的所有路径
- LeetCode101|路径总和
- LeetCode100|两个数组的交集II
- LeetCode108|数组中重复的数字
- LeetCode107|从上打印二叉树
- LeetCode106|从尾到头打印链表
- LeetCode113|两数之和
- LeetCode112|两数之和II-输入有序数组
- LeetCode111|独一无二的出现次数
- LeetCode110|第N个泰波那契数
- LeetCode109|斐波那契数列