【C++】陣列指標與error: lvalue required as increment operand

風塵_NULL發表於2017-07-28
int (*p)[10]是一個陣列指標,但是這個指標不是指向陣列的首地址,而是指向陣列名的地址。
using arrT=int[10];
arrT
* functions(arrT* arrs,size_t a_size){
 int *p=(*arrs);
 for(int i=0;i<a_size;i++){
 // std::cout<<i<<std::endl;
 //正確的方式 
 *p=i;
 p++;
 //不能用下面的語句,(*arrs)++會報lvalue required as increment operand錯誤,因為(*arrs)不是一個左值
 //*(*arrs)=i;
 //(*arrs)++;
 
 }
 return arrs;

}

int main()
{
 int (*p)[10];
 int arrs[]={1,2,3,4,5,0,0,0,0,0};
 //不能是p=functions(arrs,10),因為是函式需要傳一個陣列指標而不是首地址指標
 p=functions(&arrs,10);
 for(auto c:(*p)){
 std::cout<<c<<std::endl;
 }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30221425/viewspace-2142716/,如需轉載,請註明出處,否則將追究法律責任。

相關文章