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

我想返回一个指向一维数组的指针,不是返回一维数组,我当然知道一维数组名是首元素的指针,我的意思是如何返回一个二维数组的“元素”--指向一维数组的指针,我知道还有其他的方法... 我想返回一个指向一维数组的指针,不是返回一维数组,我当然知道一维数组名是首元素的指针,我的意思是如何返回一个二维数组的“元素”--指向一维数组的指针,我知道还有其他的方法,但是,函数的返回值可以使指针,而指向一维数组的指针也是指针,所以我想能够写一个返回值为指向一维数组的指针的函数,但在vc6.0中通不过,请教一下怎么写?
我的函数头如下:
double(*)[2] read(int n){
。。。。。
}
楼下的方法的确行,但非得这样吗?直接写不行吗?
展开
 我来答
甘慈心0hg
2009-03-20 · TA获得超过541个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:384万
展开全部
#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;
}
亲圆里2516
2009-03-20 · TA获得超过191个赞
知道小有建树答主
回答量:535
采纳率:0%
帮助的人:261万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阴影中的猫猫
2009-03-20 · TA获得超过1199个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:416万
展开全部
typedef double (*point) [2];
point read(int n);

这样如何?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式