C++二维数组求地址的多种情况

int a[3][4] = { { 1,2,3,4 },{ 5,6,7,8 },{ 9,10,11,12 } };
一、地址
a或a+0首行的地址
a[0]首行的地址
&a[0]首行的地址
a+m第m行的首地址
a[m]第m行的首地址
&a[m]第m行的首地址
&a[0]+m第m行的首地址
&a[0][0]+m二维数组是一维存储,m为索引号,获取元素地址
&a[m][n]第m行n列元素的地址
a[m][n]第m行n列元素
a[m]+n第m行n列元素的地址
*(a[m]+n)第m行n列元素
*(a+m)+n第m行n列元素的地址
*( *(a+m)+n)第m行n列元素
int brr[3][4] = { { 1,2,3,4 },{ 5,6,7,8 },{ 9,10,11,12 } };
	cout << brr    <<" "<< brr + 1  <<" "<< brr + 2   << endl;
	cout << brr[0] <<" "<< brr[1]   <<" "<< brr[2]    << endl;
	cout << &brr[0]<<" "<< &brr[1]  <<" "<< &brr[2]   << endl;
	cout << &brr[0]<<" "<< &brr[0]+1<<" "<< &brr[0]+2 << endl;
	cout << &brr[0][0] << " " << &brr[0][0] + 4 << " " << &brr[0] + 8 << endl;
	cout << endl;
	cout << &brr[0][3]        << " " << &brr[1][3]		  << " " << &brr[2][3]		  << endl;
	cout << brr[0][3]         << " " << brr[1][3]		  << " " << brr[2][3]		  << endl;
	cout << brr[0]+3		  << " " << brr[1]+3		  << " " << brr[2]+3		  << endl;
	cout << *(brr[0] + 3)     << " " << *(brr[1] + 3)     << " " << *(brr[2] + 3)	  << endl;
	cout << *(brr+0) + 3      << " " << *(brr+1) + 3      << " " << *(brr+2) + 3	  << endl;
	cout << *(*(brr + 0) + 3) << " " << *(*(brr + 1) + 3) << " " << *(*(brr + 2) + 3) << endl;

在这里插入图片描述

二、二维数组的物理存储

在这里插入图片描述

三、数组指针与指针数组1
  1. 数组指针:

  int (*p)[4]:p是一个指向整型数组的指针,简称数组指针,重点在于一定是个指针,数组起修饰作用

  1. 指针数组:

  int *p[4]:是一个保存指针的数组

总结:当遇到复杂的考虑两点

  1. 优先级
      () >[ ]> *

  2. 指向
      1) 若是指针(带*号),则看指向什么东西
      2) 若指向数组(带[]),则看长度和数据类型
      3) 若是函数(带小括号()),则看参数列表和访问值


  1. https://blog.csdn.net/xiaobaibai915/article/details/79943659 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还能坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值