我正在创建一个接受可变大小数组和返回平方数组的函数。但是在函数声明中似乎存在问题 - 我得到错误为error: cannot convert 'int**' to 'int*'
。返回指向可变大小数组的指针的正确方法是什么?
#include <iostream>
int *arrSqr(int *a[],int *b)
{
for (int k=0;k!=*b;++k)
*a[k] = (*a[k]) * (*a[k]);
return a;
}
int main()
{
int* variable_arr;
int size=10;
variable_arr = new int[size];
for (int k=0; k<size; ++k)
variable_arr[k] = k;
int *v2=arrSqr(variable_arr,size);
//display
for (int k=0; k<size; ++k)
std::cout<<(*v2)[k]<<" ";
std::cout<<std::endl;
return 0;
}
答案 0 :(得分:0)
您只需要为数组传递一个int指针,并为该大小传递一个int。然后你的代码简化了,因为你不必在任何地方取消引用,只需使用operator []。
#include <iostream>
int *arrSqr(int *a, int b) //<- here I changed the function signature to take int* and an int
{
for (int k = 0; k != b; ++k) //<- you don't need to dereference the size
a[k] = (a[k]) * (a[k]); //<- you can just use [] to index the array
return a;
}
int main()
{
int* variable_arr;
int size = 10;
variable_arr = new int[size];
for (int k = 0; k<size; ++k)
variable_arr[k] = k;
int *v2 = arrSqr(variable_arr, size);
//display
for (int k = 0; k<size; ++k)
std::cout << v2[k] << " "; //<- same story when printing
std::cout << std::endl;
return 0;
}