【发布时间】:2018-05-22 19:56:02
【问题描述】:
我正在尝试使用随机值加载大小为 n(用户输入)的数组。我读过你不能在 C 中返回一个数组,你必须使用一个指针(这很令人困惑)。但是,我读到如果您将该数组存储到返回函数中的局部变量中,则指针将不起作用并且可以使用静态数组(可以在函数中返回吗?)。另外,我读到你应该在使用数组打开空间备份后调用free?我一定是用错了,因为它崩溃了。所以我暂时把它注释掉了。澄清一下就好了。
这是我目前所拥有的。打印时,它只是打印我认为只是垃圾的东西。
int* prefixAverages1(int);
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
int choice;
int input;
printf("What is the size of the array?:");
scanf("%d", &input);
printf("Do you want to run prefixAverages 1 or 2?");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("Beginning prefixAverages1\n");
int *a = prefixAverages1(input);
for (int i=0; i < input; i++) {
printf("%d", &i);
printf("%d \n", a[i]);
}
//free(a);
break;
}
}
int* prefixAverages1(int input) {
int x[input];
int *a = (int*)malloc(input);
srand(time(NULL));
for(int i = 0; i < input; i++) {
int s = 0;
for(int j = 0; j < i; j++) {
int r = rand() % 100;
x[j] = r;
s = s + x[j];
}
a[i] = s / (i+1);
printf("%d \n", a[i]);
}
return a;
}
我知道我的语法可能有问题。我已经很多年没有接触过 C 语言了,如果我的错误是语法错误,请告诉我。
edit:值按函数中的预期打印。在代码中添加了打印语句以提高清晰度
【问题讨论】:
-
为什么不在 main() 中创建一个数组,然后将其发送给要修改的函数?
-
@AustinStephens 我已经想到了,但我最终需要将数组传递回主数组。这不会让我回到同样的境地吗?
-
不,你发送的数组也会在main()中被修改;你不必返回任何东西。
-
@AustinStephens 我猜这就是指针功能发挥作用的地方?这听起来像是可行的,但我的任务明确要求将数组传回主目录。
-
printf("%d", &i);==printf("%d: ", i);