二维数组与指针

举例说明C++中二维数组与指针的应用:

#include <iostream>
using namespace std;

int main() {
	int a[2][3] = {{0,1,2},{3,4,5}};
	cout << a << endl;//第一行数组的第一个数据的地址(a[0][0])
	cout << *a << endl;//第一行数组的第一个数据的地址(a[0][0])
	cout << a[0] << endl;//第一行数组的第一个数据的地址(a[0][0])
	cout << &a[0] << endl;//第一行数组的第一个数据的地址(a[0][0])
	cout << &a[0][0] << endl;//第一行数组的第一个数据的地址(a[0][0])
	cout << a+1 << endl;//第二行数组的第一个数据的地址(a[1][0])
	cout << *(a+1) << endl;//第二行数组的第一个数据的地址(a[1][0])
	cout << a[1] << endl;//第二行数组的第一个数据的地址(a[1][0])
	cout << a[1]+1 << endl;//第二行数组的第二个数据的地址(a[1][1])
	cout << *(a+1)+1 << endl;//第二行数组的第二个数据的地址(a[1][1])

	cout << *(a[1]+1) << endl;//a[1][1]的数据
	cout << *(*(a+1)+1) << endl;//a[1][1]的数据
	return 0;
}

使用eclipse运行结果:


总结:

(1)a、*a 、a[0]、&a[0]、&a[0][0]都表示第一个一维数组的数组名和首地址;

(2)a[0]可以看成a[0]+0,同理a[1]+1也表示a[1]的第二个数据的首地址,因此*(a[1]+1)表示a[1][1]的值。此外,*(*(a+1)+1)也可以表示a[1][1]的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值