在一个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..
请问如何解决呢,谢谢 展开
{
data=new float[100];
}
int main()
{
float* data = NULL;
allocatememory(data);
.....
}
但问题就在于,用内存分配函数分配的内存无法传回到main中, main中调用allocatememory后data依然为NULL..
请问如何解决呢,谢谢 展开
6个回答
展开全部
#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;
}
}
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原则:你分配的内存空间地址只要能想办法在函数的参数中传来传去,或者函数的返回值部分传来传去就可以的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回你分配内存的地址,将这个返回值作为参数传递给另外一个函数。
float * allocatmemory()
{
return address;
}
void anotherfunction(float *address)
{
}
float * allocatmemory()
{
return address;
}
void anotherfunction(float *address)
{
}
追问
果然行,但是这是唯一解决方法吗?
因为写成
data= allocatememory(data);
感觉有点奇怪,哈哈
多谢阿,我知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还有一种方法就是,用指向指针的指针,楼主自己琢吧。
追问
请明示,不太懂啊,谢谢了,小弟愚钝
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回指针 留着备用 需要时传给 另一个函数
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询