我似乎无法找到我在C中出错的地方。在第37行,它表示使用数组类型赋值给任何帮助或建议将非常感谢。
我还想知道是否有一些事情要做,不要在括号中添加它们以显示它们在第37行上的数组,但当我将它们放入其中时会显示更多错误
/*
This program uses pass by reference to calculate the values after two arrays are multiplied by each other
16/02/2015
Jake Young
*/
#include <stdio.h>
#define size 5
//Prototype
int multiply_function(int *[], int *[]);
main()
{
int array1[size];
int array2[size];
int i;
int answer[size];
//get users input for array1
printf("Please enter %d values into array1:\n", size);
for(i=0; i<size; i++)
{
scanf("%d", &array1[i]);
}//end for loop
//get users input for array2
printf("Please enter %d values into array2:\n", size);
for(i=0; i<size; i++)
{
scanf("%d", &array2[i]);
}//end for loop
//call function()
answer=multiply_function(&array1, &array2); // line 37
//Print out the results from array1 multiplied by array2
printf("Array1 multiplied by Array2 is the following:\n");
for(i=0; i<size; i++)
{
printf("%d multiplied by %d is %d\n", array1[i], array2[i], answer[i]);
}//end for loop
}//end main()
multiply_function(int *array1[], int *array2[])
{
int *answer[size];
int i;
for(i=0; i<size; i++)
{
//calculate multiplication
*answer[i]= *array1[i]* *array2[i];
}//end for loop
return(*answer);
}//end function()
答案 0 :(得分:1)
int multiply_function(int * [],int * []);
这没有任何意义。您打算将整数数组传递给函数,而不是指针数组。您必须研究如何将数组传递给函数。
main()的
此表格不标准。除非你正在编写一个&#34;裸机&#34;在嵌入式系统中,您应该使用int main (void)
。
answer = multiply_function(&amp; array1,&amp; array2);
这没有任何意义。您声明函数返回int。再次,研究如何将数组传递给函数和从函数传递数组。此外,您无法使用赋值运算符复制数组:您必须使用memcpy()或类似的函数。
multiply_function(int * array1 [],int * array2 [])
函数定义与原型不同:这总是不好的做法。除此之外,如上所述,该功能没有任何意义。
int * answer [size];
这没有任何意义,你要声明一个指针数组,你想要一个整数数组。
返回(*答案);
在C中返回指向局部变量的指针总是一个bug。你不能像这样返回数组。并且不需要括号。
答案 1 :(得分:1)
好的,你应该花更多的时间来研究C中的数组,指针和函数基础。
除了代码中的语法问题外,此代码中的基本问题是answer []数组。它在main()和multiply_function()中定义。你必须做的是将这个数组传递给multiply_function()并让函数填充数组。
我正在提供以下解决方案,希望您将其与您的版本进行比较并研究差异和继续学习C的基础知识:
#include <stdio.h>
#define size 5
//Prototype
int multiply_function(int *, int *, int *);
main()
{
int array1[size];
int array2[size];
int i;
int answer[size];
//get users input for array1
printf("Please enter %d values into array1:\n", size);
for(i=0; i<size; i++)
{
scanf("%d", &array1[i]);
}//end for loop
//get users input for array2
printf("Please enter %d values into array2:\n", size);
for(i=0; i<size; i++)
{
scanf("%d", &array2[i]);
}//end for loop
//call function()
multiply_function(array1, array2, answer);
//Print out the results from array1 multiplied by array2
printf("Array1 multiplied by Array2 is the following:\n");
for(i=0; i<size; i++)
{
printf("%d multiplied by %d is %d\n", array1[i], array2[i], answer[i]);
}//end for loop
}//end main()
multiply_function(int *array1, int *array2, int *answer)
{
int i;
for(i=0; i<size; i++)
{
//calculate multiplication
answer[i]= array1[i] * array2[i];
}//end for loop
return(*answer);
}//end function()