标题:请帮忙看个程序,为什么返回不了函数指针?可能有点坑...
只看楼主
zsn6034
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-16
结帖率:50%
已结贴  问题点数:20 回复次数:6 
请帮忙看个程序,为什么返回不了函数指针?可能有点坑...
  题目是:输入10个整数,将其中最小的数与第一个数对换,最大的数与最后一个数对换.写3个函数:1.输入10个数;2.进行处理;3.输出10个数:
函数指针返回部分出错了,但不知道如何修改...


#include <iostream>
using namespace std;
int main(){
    int *input();
    int *excute(int *p);
    void output(int *q);
    int x[10],*y;
    y=x;
    y=*input();
    y=*excute(y);
    output(y);
    return 0;
}
int *input(){
    int i,a[10],*k;
    cout<<"please input 10 numbers:"<<'\n';
    for(i=0;i<10;i++)
        cin>>a[i];
    k=a;
    return k;
}
int *excute(int *p){
    int a,b,r,max=p[0],min=p[0],i;
    for(i=0;i<10;i++)
        if(p[i]>=max){
            max=p[i];
            a=i;}
    for(i=0;i<10;i++)
        if(p[i]<=min){
            min=p[i];
            b=i;}
    r=p[a];
    p[a]=p[9];
    p[9]=r;
    r=p[b];
    p[b]=p[0];
    p[0]=p[b];
    return p;
}
void output(int *q){
    int i;
    for(i=0;i<10;i++)
        cout<<q[i];
    return 0;
}
搜索更多相关主题的帖子: include 最大的 return please numbers 
2014-03-26 23:32
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
得分:5 
代码有点长,亲
2014-03-27 15:55
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
得分:0 
还有,不明白你在说神马
2014-03-27 15:56
zsn6034
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-16
得分:0 
写3个函数构成一个程序,题目不是写在最上行了吗?帮帮忙啊亲
2014-03-27 17:03
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:5 
全部都是错的,重写吧.先理解下指针除非new,它是不具备存值的空间的.
程序代码:
#include <iostream>
using namespace std;
int main(){
    int *input();
    int *excute(int *p);
    void output(int *q);
    int x[10],*y;
    y=x;//你是想用new功能??如果是,那么指针指错地址了,还有除了Y指向下标0,你除非按4位移动一次访问没别的办法,没法用指针下标去访问,这和new出来的不一样
    y=*input();//返回不了结果
    y=*excute(y);//既然传参用的是指针为什么参数不用引用
    output(y);//肯定传不了
    return 0;
}
int *input(){
    int i,a[10],*k;
    cout<<"please input 10 numbers:"<<'\n';
    for(i=0;i<10;i++)
        cin>>a[i];
    k=a;
    return k;
}
int *excute(int *p){
    int a,b,r,max=p[0],min=p[0],i;
    for(i=0;i<10;i++)
        if(p[i]>=max){
            max=p[i];
            a=i;}
    for(i=0;i<10;i++)
        if(p[i]<=min){
            min=p[i];
            b=i;}
    r=p[a];
    p[a]=p[9];
    p[9]=r;
    r=p[b];
    p[b]=p[0];
    p[0]=p[b];
    return p;
}
void output(int *q){
    int i;
    for(i=0;i<10;i++)
        cout<<q[i];
    return 0;
} 


2014-03-27 17:40
zsn6034
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-16
得分:0 
- -不知道NEW功能.就是想弄一个指向指针的函数,但为什么返回不了指针.
2014-03-28 11:10
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
得分:5 
书上说的很明白:不要让函数返回一个局部变量的引用,因为在函数结束后,这一局部变量就会消失,就你这个程序而言,变成了一个野指针

[ 本帖最后由 i80286 于 2014-3-28 12:31 编辑 ]
2014-03-28 11:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429216-1-1.html




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

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