阿Cxi 发表于 2021-1-27 16:42:31

关于C语言返回指针值的函数问题

这是目标函数
#include <stdio.h>
int main()
{
        double score[] = {{80.0,79.5,90.0,70.5},{90.5,60.0,66.5,79.5},{70.5,60.0,90.0,79.5}};
        double *search(double(*pointer),int n);
        double *p;
        int i,m;
        printf("please enter the number of student:");
        scanf("%d",&m);
        printf("The scores of No.%d are:\n",m);
        p = search(score,m);
        for(i=0;i<4;i++)
        {
                printf("%5.2f\t",*(p+i));
                printf("\n");
        }
}
double *search(double (*pointer),int n)
{
        double *pt;
        pt = *(pointer+n);
        return pt;
}
这是我自己打的函数
#include <stdio.h>
double *search(double *(a),int n)
{
        double *pt;
        pt = *(a+n);
        return pt;
}

int main()
{
        int b;
        double *p,score = {{80.5,70,90,65.5},{55.5,60,96,70.5},{90.5,91,99,85}};
        scanf("%d",&b);
        printf("the NO.%d student's score is \n");
        p = search(score,b);
        for(;p<p+4;p++)
        {
                printf("%lf\n",*p);
        }
}
不知道为啥我打的不能编译,大概就是输入数字从而得出几号同学的成绩,麻烦大神指导一下,多谢

sunrise085 发表于 2021-1-27 17:13:23

指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)
但是你的程序中写的是一个指针数组,(double *(a)
你自己看看这俩的区别,括号的位置不一样
自己在哈哈学习一下指针数组和数组指针的区别吧

阿Cxi 发表于 2021-1-27 18:01:36

sunrise085 发表于 2021-1-27 17:13
指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)
但是你的程序中 ...

这点已改正,还有最后那个for循环,我发现不能用p++来输出,而是需要用i++然后输出*(p+i)这里也不太理解

xieglt 发表于 2021-1-27 18:51:44

阿Cxi 发表于 2021-1-27 18:01
这点已改正,还有最后那个for循环,我发现不能用p++来输出,而是需要用i++然后输出*(p+i)这里也不太理解

可以用p++来输出,但是循环结束条件错了。

阿Cxi 发表于 2021-1-27 20:08:51

本帖最后由 阿Cxi 于 2021-1-27 20:10 编辑

xieglt 发表于 2021-1-27 18:51
可以用p++来输出,但是循环结束条件错了。

请问应该用什么呢,如果能解答下的话多谢了

xieglt 发表于 2021-1-27 20:22:47

阿Cxi 发表于 2021-1-27 20:08
请问应该用什么呢,如果能解答下的话多谢了

#include <stdio.h>
double *search(double (* a),int n)
{
        double *pt;
        pt = *(a+n);
        return pt;
}

int main()
{
        int b;
        double *q;
        double *p,score = {{80.5,70,90,65.5},{55.5,60,96,70.5},{90.5,91,99,85}};
        scanf("%d",&b);

        printf("the NO.%d student's score is \n");
        p = search(score,b);
       

        /*
        1、用别的变量作循环计数
        比如
        for(b=0 ; b< 4 ; b++)
        {
                printf("%lf\n",*p++);
        }
        */

        //2、定义一个指针变量,先计算出循环结束的地址
        //比如 doubel * q = p + 4;
        //for(;p<q; p++)
        q = p + 4;
        for(; p<q ; p++)
        {
                printf("%lf\n",*p);
        }
        return 0;
}
页: [1]
查看完整版本: 关于C语言返回指针值的函数问题