【发布时间】:2015-10-01 18:25:01
【问题描述】:
好吧,我确信这很简单,但我不知道如何使用函数。到目前为止,我能够处理 main 中的所有内容,但现在我需要使用函数来完成我所做的任何事情。因此,从下面的代码中,我如何读入(或正确的术语是)main 中的函数?
编辑:为了向大家澄清,我的问题是如何访问我在 main 中返回的数组?
下面的代码接受用户输入指定的不同数量学生的考试成绩。
#include <stdio.h>
#include <stdlib.h>
int** getTestData();
int main (){
///this is where I'm lost..
int (*a)[];
a = getTestData();
}
int** getTestData(){
int students, numberOfTests, testScores, i, j;
int** testScoreBank;
// reads in studens
scanf("%i", &students);
testScoreBank = (int**) malloc (sizeof(int)*students);
for(i=0; i<students;i++){
//how many number of tests there are
scanf("%i", &numberOfTests);
testScoreBank = (int*) malloc (sizeof(int)*numberOfTests);
for(j=0; j<numberOfTests; j++){
//the tests themselves
scanf("%i", &testScores);
testScoreBank[i][j] = testScores;
}
}
return testScoreBank;
}
【问题讨论】:
-
在 for 循环之前,您应该在创建指针数组时执行
testScoreBank = malloc(sizeof(int*) * students);。在 for 循环中你应该做testScoreBank[i] = malloc(sizeof(int) * numberOfTests);,你现在所做的没有意义。无论如何,对于这个问题,我不知道你想用这个数组在这个主函数中完成什么。 -
是的.. 没有很好地解释自己。如何在 main 而不是 getTestData 中打印我的数组?当我返回 testScoreBank 时,我应该返回数组,现在我如何才能在 main 中访问该数组?
-
您可以先使用
int** a = getTestData();,但问题是您不知道有多少学生以及他们每个人进行了多少测试。您可以使用此信息创建一个结构,或者在 main 中声明一些变量并将指向它们的指针传递给您的函数,这样您就可以从那里填写它们,例如您需要学生数量和指向您将放置大小的数组的指针每个数组)。另一种选择是使用全局变量。
标签: c function multidimensional-array