当前位置: 首页 > 有奖问答 >C++数组问题不知出在哪?

C++数组问题不知出在哪?

作者 简单疯狂
来源: 小木虫 400 8 举报帖子
+关注

#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;
}
麻烦大神看看什么漏了或错了,谢谢! 返回小木虫查看更多

今日热帖
  • 精华评论
  • 硫酸亚铜

    你编译出了什么错误?你想得到什么结果呢?麻烦说清楚一点。感觉是你传参数有问题,你应该在函数内释放空间,否则可能导致内存泄露,你在main函数内的a和函数中的ap不是同一个指针,ap应该是a在函数内的拷贝,你是用ap去申请的空间,而a没有申请空间,creat函数结束,ap的生命周期也结束了,ap却被销毁了,而它申请的堆空间没被释放,导致内存泄露。

  • 硫酸亚铜

    可以试试用引用加指针试试。

  • purplerose8236

    for(int i=0;i<n;i++) ap=i;
    你这个只是给第一个地址里赋值了,而指针没有移动,后面的空间里都没有赋值呀

  • 简单疯狂

    引用回帖:
    2楼: Originally posted by 硫酸亚铜 at 2013-12-10 08:09:27
    你编译出了什么错误?你想得到什么结果呢?麻烦说清楚一点。感觉是你传参数有问题,你应该在函数内释放空间,否则可能导致内存泄露,你在main函数内的a和函数中的ap不是同一个指针,ap应该是a在函数内的拷贝,你是用 ...

    主要是这代码运行时会弹出框框说这程序停止运行了,好像是数组一开始没分配空间啊!

  • 简单疯狂

    引用回帖:
    4楼: Originally posted by purplerose8236 at 2013-12-10 09:10:33
    for(int i=0;i<n;i++) ap=i;
    你这个只是给第一个地址里赋值了,而指针没有移动,后面的空间里都没有赋值呀

    那里是我弄错了,应该是ap=i,真正要找的错误不在这里

  • 简单疯狂

    引用回帖:
    3楼: Originally posted by 硫酸亚铜 at 2013-12-10 08:11:08
    可以试试用引用加指针试试。

    怎样弄,不懂!

  • 简单疯狂

    引用回帖:
    2楼: Originally posted by 硫酸亚铜 at 2013-12-10 08:09:27
    你编译出了什么错误?你想得到什么结果呢?麻烦说清楚一点。感觉是你传参数有问题,你应该在函数内释放空间,否则可能导致内存泄露,你在main函数内的a和函数中的ap不是同一个指针,ap应该是a在函数内的拷贝,你是用 ...

    弄出来了,在create(int *ap,int)改成create(int *&ap,int),只是在以前看到这样用取址符,还不知道这样关联地址的分配

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓