int main(void)
{
double arr[3][2];
double ** arrP = set(arr);
return 0;
}
double** set(double array[][2]){
for(int i = 0; i < 3; i++){
array[i][0] = (2.5 + pow(2 + i, 2));
array[i][1] = 2.5 + 3 - i;
}
return array;
}
任务是将一个数组传递给一个函数,填充它,然后返回一个指向数组的指针。返回时出现错误:
从不兼容的指针类型返回
但是二维数组是数组的数组;因此它的类型将是double **?
二维数组类型会自动转换为指向一维数组的指针类型,这与指向指针的指针类型不兼容。所以不清楚您最初是从哪里得到类型的
double **。在您的情况下,函数参数的类型为
double (*)[2]。如果你真的想返回一个指向原始数组的指针,这是应该从函数返回的类型。那些。函数可以这样声明:在 help 的帮助下
typedef,您可以使公告更具可读性。但是,由于您的函数针对 array 进行了专门且严格的改进
[3][2],因此甚至值得这样做:但脱离上下文很难判断。
我一直对复杂类型感到困惑,这就是我使用 的原因
typedef,所以在您的情况下,我会这样做: