为何有时候要用(*pa)[i]有时候只能用pa[i]
为什么有时候要用(*pa)[i]有时候只能用pa[i]在main中使用array类,std::arraydouble,4 expenses然后定义
为什么有时候要用(*pa)[i]有时候只能用pa[i]
在main中使用array类,
std::array<double,4> expenses;
然后定义了这样一个函数。
void fill(std::array<double,4> * pa);
然后传导expenses
fill(&expenses);
为什么在fill中使用pa[i]时一定要加(*pa)[i]才有效?
而另外,我写了一个double[]版本。
在main中使用double,
double expenses[4];
然后定义这样一个函数
void fill(double * pa);
同样传导expenses,
fill(expenses);
//此时不可以使用&,因为expenses本身就是地址
为什么在fill中使用pa时不能加*了?变成*pa就无法使用!
难道说double不是类?array是类?一个是对象,一个不是对象吗?
[解决办法]第二个expenses不能取地址,它本来就是数组的首地址,不是变量,没有内存地址!
[解决办法]前者,传递的是进去的是指向指针的指针,所以pa是指向指针的指针地址,(*p)才是array数组的首地址,所以用(*pa)[i];
后者,则是直接传递的数组指针地址。