指针与二维数组

指针与二维数组

学习指针与二维数组的关系后发现有一些特别的地方,是指针与一维数组不一样的,在这里总结一下。
  1. 首先明确二维数组名是一个指针常量,且是行指针。所以把它赋值给别的指针时要注意(下面会讲)。
  2. 指针在二维数组中分为行指针元素指针(即列指针),这里设数组为a[ 2 ][ 3 ]
  • 行指针如:a,a+1;
  • 元素指针如:*(a+1)(即a[1]);
  • 注意:a+i是下标为i行的首地址,即a[ i ][ 0 ]的地址。但*(a+i)不是a[ i ][ 0 ],这是从行控制转为列控制的标志。
  1. 二维数组元素a[ i ][ j ]的地址表示及元素表示
  • a[ i ][ j ]的地址可表示为:&a[ i ][ j ]、a[ i ]+j、*(a+i)+j;
  • 元素表示为:a[ i ][ j ]、*(a[ i ]+j)、*(*(a+i)+j)、(*(a+i))[ j ];
  1. 由第一点和第二点可知,想要用指针访问二维数组只有行指针和元素指针两种途径,具体方法如下:
  • 行指针:
int (*p)[3]; //注意p的括号不能省;
p=a; //这里可以直接赋值
*(p[1]+2=20; //a[1][2]=20;
  • 元素指针
int *p;
p=a[0]; //不能直接使用a
  1. 应用:编写一个通用的输出二维数组的函数
void Print(int *p,int row, int col)
{
	for(int i=0;i<row*col;i++,p++)
	{
		if(i%col==0) cout<<endl;
		cout<<setw(4)<<*p;
	}
	cout<<endl;
}
  • 注意:在这里数组的行列已知。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值