指针数组等基础

         话说昨天我读C++ Primer的时候,遇到句话不理解,void putValues( int (&arr)[10] );,然我疑惑了好一会,

然后就跑CSDN上去提问(貌似高手回贴速度很快的), 虽然很多热心的大虾帮我解释,我还是迷迷糊糊的,

今天结贴给分的时候都还郁闷着呢。

       直到我实在受不了了,翻开老谭的书看看,有int *p[10],这样的写法,我才豁然开朗啊,

这么基础的东西有都叫我忘了,不过疑问搞不清楚的滋味真不爽啊,所以特地就这方面的细节写出来,

希望以后有相同疑问的兄弟们看到我的文章能有所帮助。

      int  a[10];   //这个我想是写程序得都知道,一个int型数组,我的目的是由这里方便理解后面的

     int* a[10];  //咋看上去可能比较迷糊,但是参考上面的,由于“[ ]”优先级高,所以等同于int*  T(a[10]);就是说也是包含10个元素的数组,不过元素类型从int变成了int*;(指针数组)

    int& a[10];  //error  不要以为同上,不支持引用数组

//以下写法可能主要用在传函数参数上面,一般不会直接这么定义

    int (*p)[10]; //到数组的指针,不过和一般的int a[10]; int* p = a;不一样,这种写法就是说int a[10]; int* p = &a;所以也可以把p当作一个二维数组的指针来理解,就是一个N行10列的数组,等价于int p[  ][10];

    int (&r)[10]; // 到数组的引用,这样写以后实际上就是对数组名字&r=a; 但是应为引用必须初始化,所以要这样写int a[10]; int (&r)[4] = a; 然后r[n]就等于a[n]拉,
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值