C/C++如何返回一个数组啊?
我比如有这样一个类Ctest,类里面有个数组不是共有的,我想要写一个方法来取出这个数组,但是下面这样好像不行,求蛋疼人士指点#include"stdio.h"classC...
我比如有这样一个类 Ctest,类里面有个数组不是共有的,我想要写一个方法来取出这个数组,但是下面这样好像不行,求蛋疼人士指点
#include "stdio.h"
class Ctest
{
protected:
char a;
int b[5];
public:
Ctest()
{
memset(this, 0, sizeof(Ctest));
}
//这里想要一个得到整个数组的方法
int *Getb( void )
{
return b;
}
};
int main()
{
Ctest ctest;
int x[5];
//这里我想把类里面的数组取出来
return 0;
} 展开
#include "stdio.h"
class Ctest
{
protected:
char a;
int b[5];
public:
Ctest()
{
memset(this, 0, sizeof(Ctest));
}
//这里想要一个得到整个数组的方法
int *Getb( void )
{
return b;
}
};
int main()
{
Ctest ctest;
int x[5];
//这里我想把类里面的数组取出来
return 0;
} 展开
展开全部
在C/C++中是不允许返回数组的,只能返回数组的指针。但这样做危险性很大,如果返回的是被调函数中定义的自动型数组,函数结束后数组空间已经不受代码控制了,通过返回的指针在主调函数中操作这块空间会产生不可预料的结果。所以一般应在主调函数中声明数组,把它的指针传给被调函数,在被调函数中通过这个指针直接操作主调函数中的数组。也可以在被调函数中动态声明数组,将它的指针返回给主调函数进行后续操作,但不能忘记在操作完毕后释放动态数组,不然会产生内存泄漏问题……
展开全部
你的意思不是不用类ctest中的数组去初始化数组x?如果是那样的话,就试一试下面的吧:
for(int i=0;i<5;i++)
x[i]=*(ctest.Getb()+i);
for(int i=0;i<5;i++)
x[i]=*(ctest.Getb()+i);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么不行?你希望怎么个取法呢?这样不知道是不是你要的意思啊~赋初值啥的我就随便写了……下面的不知道有没有帮助
class Ctest
{
protected:
char a;
int b[5];
public:
Ctest()
{
b[0]=1;
b[1]=2;
b[2]=3;
}
//这里想要一个得到整个数组的方法
int *Getb( void )
{
return b;
}
};
int main()
{
Ctest ctest;
// int x[5];
int * b=ctest.Getb();
for(int j=0;j<3;j++)
cout<<*b++;
//这里我想把类里面的数组取出来
return 0;
}
class Ctest
{
protected:
char a;
int b[5];
public:
Ctest()
{
b[0]=1;
b[1]=2;
b[2]=3;
}
//这里想要一个得到整个数组的方法
int *Getb( void )
{
return b;
}
};
int main()
{
Ctest ctest;
// int x[5];
int * b=ctest.Getb();
for(int j=0;j<3;j++)
cout<<*b++;
//这里我想把类里面的数组取出来
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询