C++二维数组指针用法

本文详细解析了C++中二维字符数组的初始化、指针定义及使用技巧,通过实例展示了如何通过指针访问和操作数组元素,深入理解数组与指针的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>;
using namespace std;
int main()
{
	char a[2][2] = { { 'a', 'b' },{ 'c', 'd' } };
	char(*p)[2] = a; 
//这里的2指的是a的列数,假如是a[2][3],那么应该定义为char(*p)[3] = a;
	cout << "*p:" << (int *)p<< endl;
//由于p是char型指针,用cout输出*p结果会是整个字符串,因此必须强制转化为其他指针,例如void *, int *,float *, double * 等
	cout << "p:" << p << endl;//和(int *)p一样,指向a中第一个元素的位置
	cout << "(*p)[0]:" << (*p)[0] << '\n';
//读取方式按行读取,也就是一行读取完再读下一行。输出数组a中第一行中第一个元素:a
	cout << "(*p)[1]:"<< (*p)[1] << '\n';//输出数组a第一行中第二个元素:b
	cout << "(*p)[2]:" << (*p)[2] << '\n';//输出数组a第二行中第一个元素:c
	cout << "(*p)[3]:" << (*p)[3] << '\n';//输出数组a第二行中第二个元素:d
	cout << "*(*p):"<< *(*p)<<endl;
//*p是指针,指向数组a的第一个元素的位置。*(*p)取的是数组数组a的第一个元素a
	cout << "*(*(p + 1)):" << *(*(p + 1)) << endl;
//在p上移动是按行移动,*(p + 1)是指向数组a的第二行第一列的位置,*(*(p + 1))取值为c
	p++;//p++和++p的区别,a=p++代表a=p,p=p+1;a=++p代表a=p+1,p=p+1。故这里p指向了b的位置
	cout << "*(*p + 1) :" << *(*p + 1) << endl;
//在*p上移动是按列移动,(*p + 1)是指向数组a的第二行第二列的位置,*(*p + 1)取值为d
	while (1);
}

运行结果:

*p:004FFC78
p:004FFC78
(*p)[0]:a
(*p)[1]:b
(*p)[2]:c
(*p)[3]:d
*(*p):a
*(*(p + 1)):c
*(*p + 1) :d

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值