已要求我编写一个代码,该代码从文本文件中提取2个1D数组,添加它们,然后将结果返回到另一个文本文件。但是,我仍然遇到有关指针的错误。我是C新手,如果有人可以向我解释我会很高兴。
ClassLoader classLoader = Example1.class.getClassLoader();
File file = new File(classLoader.getResource("data/reddit/redditdump.json").getFile());
Object obj = parser.parse(new FileReader(file));
答案 0 :(得分:0)
我看到的第一个错误是您需要使用返回值的类型声明函数类型,在这种情况下,该函数必须为:
int *dzialanie(int a[], int b[]){
...
return wsk;
}
for循环中出现另一个错误,操作必须为:
...
for (int i=0; i<9; i++){
*(wsk + i) = a[i] + b[i];
}
...
与另一个相同(请注意,您也没有声明i也是变量)。另一种方法是:
wsk[i] = a[i] - b[i];
是一样的。 如果您已经知道两个数组的维数,则最好将参数用作指针,它将看起来像:
int dzialanie(int *a, int *b){
...
}
您将不得不分配内存,这可以通过malloc完成:
wsk = (int *)malloc(10*sizeof(int));
在程序结束时,您将希望释放分配的内存,方法是:
free(wsk);
希望您能理解,我的英语不好,我来自阿根廷。问候!
答案 1 :(得分:0)
因为您使用的是全局变量,所以返回类型应该为void(和/或某种形式的指示已完成计算。这又可以是简单的返回值-1或w / e(剩下的部分交给您)。
int res[10]; // global variable
void add(int *a, int *b) // no return value, new array will be saved globally(not advisable)
{
int sign = -1; // your +- check
printf("0.Suma\n1.Roznica");
scanf("%c", &sign);
if (sign == 0)
{
for (int i = 0; i < 9; i++)
res[i] = a[i] + b[i];
}
else if (sign == 1)
{
for (int i = 0; i < 9; i++)
res[i] = a[i] - b[i];
}
}
另一种替代方法是使用a或b作为“返回”值,并进行简单的更改,例如a[i] += b[i]
->现在a具有a + b的值。这样,您就不必处理超出范围等的指针(有关如何从函数中返回指针(以安全的方式)的文档为here)。