注册 登录
编程论坛 C++教室

请帮忙看个程序,为什么返回不了函数指针?可能有点坑...

zsn6034 发布于 2014-03-26 23:32, 492 次点击
  题目是:输入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;
}
6 回复
#2
lonely_212014-03-27 15:55
代码有点长,亲
#3
lonely_212014-03-27 15:56
还有,不明白你在说神马
#4
zsn60342014-03-27 17:03
写3个函数构成一个程序,题目不是写在最上行了吗?帮帮忙啊亲
#5
天使梦魔2014-03-27 17:40
全部都是错的,重写吧.先理解下指针除非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;
}


#6
zsn60342014-03-28 11:10
- -不知道NEW功能.就是想弄一个指向指针的函数,但为什么返回不了指针.
#7
i802862014-03-28 11:51
书上说的很明白:不要让函数返回一个局部变量的引用,因为在函数结束后,这一局部变量就会消失,就你这个程序而言,变成了一个野指针

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