c语言中函数返回值是指向一维数组的指针的函数怎么写?

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:20:18
我想返回一个指向一维数组的指针,不是返回一维数组,我当然知道一维数组名是首元素的指针,我的意思是如何返回一个二维数组的“元素”--指向一维数组的指针,我知道还有其他的方法,但是,函数的返回值可以使指针,而指向一维数组的指针也是指针,所以我想能够写一个返回值为指向一维数组的指针的函数,但在vc6.0中通不过,请教一下怎么写?
我的函数头如下:
double(*)[2] read(int n){
。。。。。
}
楼下的方法的确行,但非得这样吗?直接写不行吗?

#include <stdio.h>
double (*p)[2];
double dA[3][2] = {{1.0,1.0},{1.1,1.0},{1.0,1.0}};

double (*read(int n))[2]{
// 在gcc下编译,函数头有些奇怪,类似于表达式变量
// 楼上用typedef是正道
p = &dA[0];
return p;
}

int main() {
printf("dA[1][0]=%lf\n",**(read(0)+1));
return 1;
}

#include<iostream>
using namespace std;

typedef double* pDouble;

double** read(int n)
{
pDouble *arr = new pDouble[2];
arr[0] = new double[n];
arr[1] = new double[n];

return arr;
}
void main()
{
double** arr = read(2);
for(int i = 0; i<2; i++)
for(int j = 0;j<2; j++)
arr[i][j] = i*j +i+j;

for(i = 0; i<2; i++)
for(int j = 0;j<2; j++)
cout<<arr[i][j]<<"\t";

for(i = 0; i<2; i++)
delete []arr[i];
delete []arr;
cout<<endl;