C/C++中二维数组和指针关系分析

#include<iostream>
using namespace std;
int main() {
    // 初始化一个二维数组
	int iArr[2][3] = {0,1,2,3,4,5};
	// 把一个二维数组一维化
	int *p = iArr[0]; // iArr[0]第一个数组的首地址 
	                         //由于二维数组在内存中的存储是先行后列的方式,所以第二行也紧跟第一行之后,这样
	                         // 就可以用p来访问数组的元素了

	//它们输出的结果都是3
	cout << p[4] << endl;  //这种访问方式是下标的方式
	cout<< *(p + 4) << endl; // 这种方式是指针方式

   // 下面用二维数组去探索
   //int **q = iArr;  // 这样子不出意外的话会报错的,是无法从int[2][3]转化为 int **
	
	//其实二维数组名是一个数组指针,那么什么是数组指针,数组指针就是指向一个数组首地址的指针,它
	// 实际也是一种指针类型,类似与函数指针,它的声明如下
    //int(*pArr)[3];// 它说明pArr是一个数组指针,它指向的是一个数组元素为int类型并且数组的元素的个数为
	                    // 3的一个数组指针,中间的括号是必不可少的。少了它就变为:指针数组。指针数组是数组
	                   // 类型,它的声明如下:
	//int *pArr[3];

	// 既然二维数组的数组名是指向第一行数组的首地址,我们也叫它为行指针。那么我们就可以用这种数组名
	// 或者指针来 访问二维数组的元素。
	int(*pArr)[3]=iArr;
	// 下面,访问第二行第二列的元素,代码如下
	cout <<"第一行第二列的元素:"<< *(*(pArr+1) +1) << endl;
	// 也可以用这这种方法来访问
	cout << *(*(iArr+1) + 1) << endl;;
    
	system("pause");
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值