博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组名和指针
阅读量:6958 次
发布时间:2019-06-27

本文共 1271 字,大约阅读时间需要 4 分钟。

 

#include 
using namespace std;#define M 2#define N 3int main(){ int a[M][N] = {
1,2,3,4,5,4}; cout<<&(a[0])<

&a[0]、&a[0][0]的值是相等的,但意义不同(对编译器来说),因为a[0] 保存的是一个指向一个具有3个元素的整型数组,而&a[0]则是获取这个数组的地址, 同样对于a[0][0]来说,a[0][0]是a[0]数组中的第一个数据,也就是一个整数,&a[0][0]则是这个整数的地址,因此在指针操作上结果不同。

理解上,变量a是一个具有2个元素的数组,这2个元素是一个具有3个元素的整型数组。  

int a[M][N] = {1,2,3,4,5,4};  写成 int a[M][N] = {

{1,2,3},{4,5,4}};  更容易理解。

数组名a=&a[0] 

另外,二维数组在内存中占据连续的空间,在内存中从上到下存储各行元素,在同一行中按照从左到右的顺序存储。因此,可以考虑定义一个指针 int* ptr = (int*)(a); ,更方便地访问二维数组的元素。

#include 
using namespace std;// 二维数组matrix中,每一行都从左到右递增排序,// 每一列都从上到下递增排序//判断一个整数是否在该二维数组中bool Find(int* matrix, int rows, int columns, int number){ bool found = false; if(matrix != NULL && rows > 0 && columns > 0) { int row = 0; int column = columns - 1; while(row < rows && column >=0) { if(matrix[row * columns + column] == number) { found = true; break; } else if(matrix[row * columns + column] > number) -- column; else ++ row; } } return found;}

 上例中,在给函数Find()传递参数时,要用(int*)matrix,而不能直接使用二维数组名matrix。

注意数组内元素的索引方式。

转载于:https://www.cnblogs.com/conard/p/4889677.html

你可能感兴趣的文章
定制多系统启动菜单
查看>>
HTML5开发学习教程,学习HTML5还是学习HTML5的制作工具?
查看>>
2019一级消防工程师考试报名条件会有专业限制吗?
查看>>
如何提高Assignment写作效率?
查看>>
给定一个串,去掉连续的重复字母,
查看>>
ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段
查看>>
dd命令
查看>>
cobbler 安装部署
查看>>
0.11.1版本docker安装与使用
查看>>
我的友情链接
查看>>
小学四则运算
查看>>
jenkins+docker的简单项目部署
查看>>
Spring工具类:WebApplicationContextUtils
查看>>
MSR2010配置小记
查看>>
(20120722)(笔记004)android开发应用程序资源
查看>>
Jquery extend的用法
查看>>
URL参数解析为一个对象
查看>>
【吾日三省吾身】2015.6.25-涅槃行动第三十八天
查看>>
python脚本输出不换行或者输出换行
查看>>
虚拟网卡实现虚拟机与本机互访
查看>>