| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:这代码为什么错了啊
只看楼主 加入收藏
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
结帖率:94.44%
收藏
已结贴  问题点数:20 回复次数:8 
这代码为什么错了啊
#include<iostream>
using namespace std;
void APP(int *pa,int n);
int main()
{
    int *ary=NULL,*t;
    int i,n;
    cout<<"n=";
    cin>>n;
    APP(ary,n);
    for(t=ary;t<ary+n;t++)
        cout<<*t<<"  ";
    cout<<endl;
    for(i=0;i<n;i++) ary[i]=10+i;
    for(i=0;i<n;i++)  cout<<ary[i]<<" ";
    cout<<endl;
    delete []ary;
    ary=NULL;
}

void APP(int *pa,int len)
{
    pa=new int[len];
    if(pa==NULL)
    {
     cout<<"allocation faiure\n";
     return;
    }
    for(int i=0;i<len;i++) pa[i]=0;
}
搜索更多相关主题的帖子: 代码 
2010-07-16 23:24
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:4 
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;

void GetMem(char **p, int n)   //第一个参数为指针的指针(地址),第二个参数为分配内存大小
{
    *p = new char[n];
}

int main()
{
    char *a = "abcdef";
    int n = strlen(a);
    char *p = 0;
  
    GetMem(&p, (n+1));   //动态内存的意义在于动态分配够用的空间。这样才能体现动态分配的意义。
    strcpy(p, a);   //拷贝字符串
    cout<<p<<endl;
  
    delete [] p;  //记得回收内存...
   
    return 0;
}
2010-07-16 23:46
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:4 
void APP(int * &pa,int len)//pa改成一个引用,它引用一个指向int的指针。这样子较为好懂,不用整个二级指针和对指针取地址。其他的看二楼说的

迭代的是人,递归的是神。
2010-07-17 06:43
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 2楼 最近不在
在问下哦,定义动态整型 int *p=new int;不能用cin>>p;来输入,那应该如何来输入p的值呢?
2010-07-17 14:21
flyingcat
Rank: 4
来 自:HDU
等 级:业余侠客
威 望:2
帖 子:55
专家分:230
注 册:2010-7-18
收藏
得分:4 
#include <iostream>
using namespace std;

int main()
{
    int *p=new int;
    scanf("%d",p);
    printf("%d\n",*p);
    return 0;
}
2010-07-18 01:19
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:4 
以下是引用草狼在2010-7-17 14:21:35的发言:

在问下哦,定义动态整型 int *p=new int;不能用cin>>p;来输入,那应该如何来输入p的值呢?
cin>>p 语法是没有问题的,只是指针不宜随便乱指到一个位置的地址

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-18 01:28
ak476565
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2010-3-3
收藏
得分:4 
int *p=new int;
cin>>*p;
能通过。
2010-07-18 20:41
qianzezi_pku
Rank: 1
等 级:新手上路
威 望:1
帖 子:8
专家分:2
注 册:2010-7-21
收藏
得分:0 
会错的原因是 void APP(int *pa,int len) 第一个参数int *pa 不是二级指针,外部不能正确得到该函数申请的空间。
所以建议使用二级指针,或者使用函数的返回形式就行了。
我改了一下代码如下:
我使用的是 函数的返回形式
#include<iostream>
using namespace std;
int * APP(int len);

int main()
{
    int *ary=NULL,*t;
    int i,n;
    cout<<"n=";
    cin>>n;
    ary=APP(n);
    for(t=ary;t<ary+n;t++)
        cout<<*t<<"  ";
    cout<<endl;
    for(i=0;i<n;i++)
        ary[i]=10+i;
    for(i=0;i<n;i++)
        cout<<ary[i]<<" ";
    cout<<endl;
    delete []ary;
    ary=NULL;
    return 0;
}

int * APP(int len)
{
    int *pa=new int[len];
    if(pa==NULL)
    {
        cout<<"allocation faiure\n";
        return NULL;
    }
    for(int i=0;i<len;i++)
        pa[i]=0;
    return pa;
}
2010-07-22 22:56
tianxiao110
Rank: 1
等 级:新手上路
帖 子:63
专家分:1
注 册:2010-7-23
收藏
得分:0 
你在这个地方出了:在实参向形参传递的时候,估计你以为这是指针也就是地址传递,但其实这是指针之间的值传递,形参pa再怎么变,实参ary都不会有反应;这样稍作修改就ok啦


#include<iostream>
using namespace std;
int* APP(int *pa,int len);
int main()
{
    int *ary=NULL,*t;
    int i,n;
    cout<<"n=";
    cin>>n;
    ary=APP(ary,n);
    for(t=ary;t<ary+n;t++)
        cout<<*t<<"  ";
    cout<<endl;
    for(i=0;i<n;i++) ary[i]=10+i;
    for(i=0;i<n;i++)  cout<<ary[i]<<" ";
    cout<<endl;
    delete []ary;
    ary=NULL;
}

int* APP(int *pa,int len)
{
    pa=new int[len];
    if(pa==NULL)
    {
     cout<<"allocation faiure\n";

    }
    for(int i=0;i<len;i++) pa[i]=0;
    return(pa);
}
2010-07-24 17:09
快速回复:这代码为什么错了啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057365 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved