C++数组问题不知出在哪?
#include<iostream>
using namespace std;
void create(int *,int);
int main()
{
int*a=NULL;
int len;
cin>>len;
create(a,len);
for(int i=0;i<len;i++)
cout<<a<<" ";
cout<<endl;
delete []a;
a=NULL;
return 0;
}
void create(int *ap,int n)
{
ap=new int[n];
for(int i=0;i<n;i++) ap=i;
}
麻烦大神看看什么漏了或错了,谢谢!
返回小木虫查看更多
今日热帖
京公网安备 11010802022153号
你编译出了什么错误?你想得到什么结果呢?麻烦说清楚一点。感觉是你传参数有问题,你应该在函数内释放空间,否则可能导致内存泄露,你在main函数内的a和函数中的ap不是同一个指针,ap应该是a在函数内的拷贝,你是用ap去申请的空间,而a没有申请空间,creat函数结束,ap的生命周期也结束了,ap却被销毁了,而它申请的堆空间没被释放,导致内存泄露。
可以试试用引用加指针试试。
for(int i=0;i<n;i++) ap=i;
你这个只是给第一个地址里赋值了,而指针没有移动,后面的空间里都没有赋值呀
主要是这代码运行时会弹出框框说这程序停止运行了,好像是数组一开始没分配空间啊!
那里是我弄错了,应该是ap=i,真正要找的错误不在这里
怎样弄,不懂!
弄出来了,在create(int *ap,int)改成create(int *&ap,int),只是在以前看到这样用取址符,还不知道这样关联地址的分配
,