函数数组问题

jiangshare1 2008-10-11 11:12:57
double CSpaceResectionDlg::Init_X_Value(double *init_X)
{
double initalfa;
double initw;
double initk;

double initXS = (m_nXA+m_nXB+m_nXC+m_nXD)/4;
double initYS = (m_nYA+m_nYB+m_nYC+m_nYD)/4;
double initZS = m_nf*(1/m_nscale);

return (double*)init_X[initXS,initYS,initZS,initalfa,initw,initk];
}

我想建一个返回数组的函数,数组是init_X[initXS,initYS,initZS,initalfa,initw,initk];可是出错了
F:\2008-2009自己的程序\SpaceResection\SpaceResectionDlg.cpp(544) : error C2108: subscript is not of integral type
F:\2008-2009自己的程序\SpaceResection\SpaceResectionDlg.cpp(544) : error C2440: 'return' : cannot convert from 'double *' to 'double'
There is no context in which this conversion is possible
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
once_and_again 2008-10-12
  • 打赏
  • 举报
回复
c专家编程 说明函数可以返回的?
1 字符串常量
2 全局的数组
3 heap的
4
5
overbai 2008-10-12
  • 打赏
  • 举报
回复
首先:编译器使用数组是转换成指针的形式来引用的(C++中对数组的引用除外,是复制数组元素),因此有错误: 'return' : cannot convert from 'double *' to 'double' ;
其次提供一些资料:
用变量a给出下面的定义
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer


yellowhwb 2008-10-12
  • 打赏
  • 举报
回复
init_X是个函数??那就不能用[]啊,要用()
返回数组的函数,其实就是返回数组首地址的函数,
比如要写一个返回int数组的函数
int* f()
{
int *p = malloc(100* sizeof(int));
return p;
}

void g()
{
int* q = f();
q[0]=0;
q[1]=1;
.........
q[99]=99;
}

但是g函数里不能用sizeof来获取q的的长度,这时sizeof(q)永远是一个指针的大小,32位机上是4。
Big鹏 2008-10-12
  • 打赏
  • 举报
回复


//return (double*)init_X[initXS,initYS,initZS,initalfa,initw,initk];
于这种写法,是不正确的。楼主想返回一个数组的函数,那么其实返回的是数组函数的首地址(当然引用也正确),
而数组函数其函数名就代表首地址(C的标准规定,就如同数组名也代表数组首地址一样),而不要这样写。
至于例子,楼主可参照楼上的几位!!


yshuise 2008-10-11
  • 打赏
  • 举报
回复
只能返回数组指针,而不能返回数组,当然可以返回数组的引用。
可以参照1楼的设计,但是根本不用什么new数组,那是传入参数的问题。
wuyu637 2008-10-11
  • 打赏
  • 举报
回复
double* CSpaceResectionDlg::Init_X_Value(double *init_X)
{
double initalfa;
double initw;
double initk;

double initXS = (m_nXA+m_nXB+m_nXC+m_nXD)/4;
double initYS = (m_nYA+m_nYB+m_nYC+m_nYD)/4;
double initZS = m_nf*(1/m_nscale);
double * dtemp = new double[6];
dtemp[0] = xxx1;
dtemp[1] = xxx2;
dtemp[2] = xxx3;
dtemp[3] = xxx4;
dtemp[4] = xxx5;
dtemp[5] = xxx6;
return dtemp;
}


65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧