指针数组等基础

         话说昨天我读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]拉,
 

原文地址:https://www.cnblogs.com/secbook/p/2655483.html