鱼C论坛

 找回密码
 立即注册
查看: 1040|回复: 5

[已解决]关于C语言返回指针值的函数问题

[复制链接]
发表于 2021-1-27 16:42:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是目标函数
#include <stdio.h>
int main()
{
        double score[][4] = {{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)[4],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)[4],int n)
{
        double *pt;
        pt = *(pointer+n);
        return pt;
}
这是我自己打的函数
#include <stdio.h>
double *search(double *(a)[4],int n)
{
        double *pt;
        pt = *(a+n);
        return pt;
}

int main()
{
        int b;
        double *p,score[3][4] = {{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);
        }
}
不知道为啥我打的不能编译,大概就是输入数字从而得出几号同学的成绩,麻烦大神指导一下,多谢
最佳答案
2021-1-27 20:22:47
阿Cxi 发表于 2021-1-27 20:08
请问应该用什么呢,如果能解答下的话多谢了
#include <stdio.h>
double *search(double (* a)[4],int n)
{
        double *pt;
        pt = *(a+n);
        return pt;
}

int main()
{
        int b;
        double *q;
        double *p,score[3][4] = {{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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-27 17:13:23 | 显示全部楼层
指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)[4]
但是你的程序中写的是一个指针数组,(double *(a)[4]
你自己看看这俩的区别,括号的位置不一样
自己在哈哈学习一下指针数组和数组指针的区别吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-27 18:01:36 | 显示全部楼层
sunrise085 发表于 2021-1-27 17:13
指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)[4]
但是你的程序中 ...

这点已改正,还有最后那个for循环,我发现不能用p++来输出,而是需要用i++然后输出*(p+i)这里也不太理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以用p++来输出,但是循环结束条件错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-27 20:08:51 | 显示全部楼层
本帖最后由 阿Cxi 于 2021-1-27 20:10 编辑
xieglt 发表于 2021-1-27 18:51
可以用p++来输出,但是循环结束条件错了。


请问应该用什么呢,如果能解答下的话多谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-27 20:22:47 | 显示全部楼层    本楼为最佳答案   
阿Cxi 发表于 2021-1-27 20:08
请问应该用什么呢,如果能解答下的话多谢了
#include <stdio.h>
double *search(double (* a)[4],int n)
{
        double *pt;
        pt = *(a+n);
        return pt;
}

int main()
{
        int b;
        double *q;
        double *p,score[3][4] = {{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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表