鱼C论坛

 找回密码
 立即注册
查看: 3081|回复: 2

用指针传递二维数组 小混乱求助

[复制链接]
发表于 2013-8-29 20:02:37 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 秃先生 于 2013-8-29 20:07 编辑

各位,这道题是求给出三个学生的四门成绩,用函数找出每个学生没过的科目。我的思路是用函数找出一个学生没过的成绩,用数组存储,然后把数组首地址返回主函数。

下面是我的代码:
#include <stdio.h>

int main(void)
{
    double score[3][4]={{65.5,55,70,34},{68.5,90,70,85.5},{59,77,99,60}};//这行学生成绩;
    double **p;//接受函数返回值
    int search(double **,int);//声明函数
    int i,j; // i表示学生代号,j用来调试返回数组的长度。
   
   
    for (i = 0; i<3; i++) //循环三个学生
   {
        p = search(score, i);//带入函数,我估计就是这步开始错了
        if (**p)
        {
            for (j = 0; *(*p+j) != 0; j++)
            {
                printf("The student %d failed sebjuct is %d",i,*(*p+j));
            }
        }
    }
   
   
}

int search(double **a,int b)
{
    int j,i=0;
    double **c;
    double test;
   
    test = **a;//a接受的是score二维数组的数组名,也就是首地址。这边应该test = score[0][0]也就是65.5才对,但是我单步调试显示的是0.
   
   
    for (j = 0; j < 4; j++)
   {

        if (*(*(a+b)+j)<60.0)
        {
            c[ i ] = (*(a+b)+j);
            i++;
        }
    }
    *c [ i ]=0;
    return c;
}
我猜测是我二维数组概念错误,但是我不知道怎么改,请各位帮忙看看呗!拜谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-29 20:12:58 | 显示全部楼层
最明显的,int search(double **a,int b)函数返回类型错了呀,你要return c; 你的c的类型的 double **,还有c是二级指针,而不是二维数组,你要知道二维数组本身也是一位数组那样连续的存储的。粗略一看暂时只想起这么多,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-29 20:18:10 | 显示全部楼层

有道理,改函数名?double **search(double **a,int b)这个应该可以吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-9 00:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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