在一个C++函数中分配的内存,如何传给另外一个函数使用,如下所示

voidallocatmemory(float*data){data=newfloat[100];}intmain(){float*data=NULL;allocatem... void allocatmemory(float* data)
{
data=new float[100];
}

int main()
{
float* data = NULL;
allocatememory(data);
.....
}

但问题就在于,用内存分配函数分配的内存无法传回到main中, main中调用allocatememory后data依然为NULL..
请问如何解决呢,谢谢
展开
 我来答
tanl_enox
2011-10-18 · TA获得超过349个赞
知道答主
回答量:82
采纳率:0%
帮助的人:73.5万
展开全部
#include <stdio.h>

void allocatmemory(float *&data)
{
data=new float[100];
}

int main()
{
float *data = NULL;
allocatmemory(data);
if(!data)
{
printf("data is null\r\n");
}
else
{
printf("data has been allocated memory.\r\n");
delete []data;
data = NULL;
}
}
更多追问追答
追问
nice,好的
追答
这个是指针的引用,还有一种方法是利用指针的指针,如下:
#include

void allocatmemory(float *&data)
{
data=new float[100];
}

int main()
{
float *data = NULL;
allocatmemory(data);
if(!data)
{
printf("data is null\r\n");
}
else
{
printf("data has been allocated memory.\r\n");
delete []data;
data = NULL;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sxsy556
2011-10-18 · TA获得超过1284个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:645万
展开全部
原则:你分配的内存空间地址只要能想办法在函数的参数中传来传去,或者函数的返回值部分传来传去就可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5be7bc6
2011-10-18 · TA获得超过130个赞
知道答主
回答量:29
采纳率:0%
帮助的人:21.9万
展开全部
返回你分配内存的地址,将这个返回值作为参数传递给另外一个函数。
float * allocatmemory()
{
return address;
}

void anotherfunction(float *address)
{
}
追问
果然行,但是这是唯一解决方法吗?
因为写成

data= allocatememory(data);

感觉有点奇怪,哈哈

多谢阿,我知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒心还飒爽丶彩旗x
2011-10-18 · TA获得超过1545个赞
知道小有建树答主
回答量:1594
采纳率:75%
帮助的人:729万
展开全部
还有一种方法就是,用指向指针的指针,楼主自己琢吧。
追问
请明示,不太懂啊,谢谢了,小弟愚钝
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veket_linux
2011-10-18 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4433万
展开全部
返回指针 留着备用 需要时传给 另一个函数
#include <iostream>
using namespace std;
int *getmem(void);
int sum(int *q);
int main()
{
int *p;
p = getmem();
printf("\n\nsum = %d\n",sum(p));
delete p;
return 0;
}
int *getmem(void)
{
int *p = new int [5];
int i;
int j;
int tmp;
for(i=0;i<5;i++)
{
cin>>p[i];
}
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(p[i]>p[j])
{
tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
cout<<"small to big:\n";
for(i=0;i<5;i++)
{
cout<<p[i]<<" ";
}
return p;
}
int sum(int *q)
{
int y;
int i;
y=0;
for(i=0;i<5;i++,q++)
{
y += *q;
}
return y;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式