c++的数组与指针

前记:

stage 1:最开始以为数组和指针是可以等价的,(int  a[4],*b=a; 用a[1]和b[1]访问的是同一个元素)。因此就自然而然地以为高维数组等价于高级指针

stage 2:开始听到说数组与指针的区别,区别之一在于数组名是不可更改的,即上述的a更像一个const point(指针常量),可以修改所指向的值但不能修改自己的值。

stage 3:碰到新问题:将多维数组名作为参数传递到形参为多维指针的函数时,无法编译通过。简单查了下说数组的退化,没深究

stage 4:(now) 看了几遍c++ primer,趁下午有空总结了各种情况,结合文中提到的内容,总算理清了数组与指针的关系。


几个例子:

1.int  a[4];  a[2]为int型,a为int *

2.int a[4][5];     a[2]类型为int[5],a类型为int (*)[5] ——指向数组的指针,数组包含5个int

3。   2中,   &a[2] 的类型与a的类型一致

4. 换句话说,[]操作符是先对指针进行加法操作,再解引用

正文:

关键:

1. 不取地址时,数组名表示指向数组第一个元素的const指针(from c++ primer)

2.取地址时,数组名的结果为数组的指针。


总结:

有多维数组int a[x0][x1]...[xn],则a[a0][a1]...[am]的类型为 int (*)[xm+2]...[xn]

规律:      inta[x0][x1][x2]...[xm][xm+1][xm+2]...[xm]

类型为int (                    *                          )[xm+2]...[xm]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值