所以我有一个简单的C程序来计算数组中元素的总和。在我看来,问题是符号int[] arr
。显然,正确的表示法是int arr[]
。在用第一种表示法运行我的程序时,我得到了八个错误。当没有任何错误对我有意义时,我只使用了第二个数组符号,并且它有效。
这是代码 -
#include <stdio.h>
int sumOfArray(int[], int);
int main()
{
int[] A={1,2,3,4,5};
int sum=0;
int size=sizeof(A)/sizeof(A[0]);
sum=sumOfArray(A,size);
printf("\n The sum of the array is: %d\n", sum);
return 0;
}
int sumOfArray(int[] arr, int n)
{
int sum=0,x;
for (x=0; x<n; x++) {
sum+=arr[x];
}
return sum;
}
如果有帮助,以下是生成的错误:
p6.c:15:8: error: expected identifier or '('
int[] A={1,2,3,4,5};
^
p6.c:17:21: error: use of undeclared identifier 'A'
int size=sizeof(A)/sizeof(A[0]);
^
p6.c:17:31: error: use of undeclared identifier 'A'
int size=sizeof(A)/sizeof(A[0]);
^
p6.c:18:20: error: use of undeclared identifier 'A'
sum=sumOfArray(A,size);
^
p6.c:23:22: error: expected ')'
int sumOfArray(int[] arr, int n)
^
p6.c:23:15: note: to match this '('
int sumOfArray(int[] arr, int n)
^
p6.c:23:5: error: conflicting types for 'sumOfArray'
int sumOfArray(int[] arr, int n)
^
p6.c:11:5: note: previous declaration is here
int sumOfArray(int[], int);
^
p6.c:23:19: error: parameter name omitted
int sumOfArray(int[] arr, int n)
^
p6.c:26:17: error: use of undeclared identifier 'n'
for (x=0; x<n; x++) {
^
p6.c:27:14: error: use of undeclared identifier 'arr'
sum+=arr[x];
^
我的印象是两个数组符号都可以接受。实际上,在许多情况下建议使用int[] arr
。但那么这里出了什么问题?有什么建议?
非常感谢!
答案 0 :(得分:3)
你必须把自己与Java混淆。
int arr[]
是C和C ++的通用语法,因为它表示变量的整数是一个数组
但是使用Java时,使用int[] arr
,因为它意味着arr是整数数组类型。 (某种程度上)
答案 1 :(得分:2)
代码应该是这样的
#include <stdio.h>
int sumOfArray(int[], int);
int main()
{
int A[]={1,2,3,4,5};
int sum=0;
int size=sizeof(A)/sizeof(A[0]);
sum=sumOfArray(A,size);
printf("\n The sum of the array is: %d\n", sum);
return 0;
}
int sumOfArray(int arr[], int n)
{
int sum=0,x;
for (x=0; x<n; x++) {
sum+=arr[x];
}
return sum;
}
答案 2 :(得分:1)
int[] arr
不是在C
中声明数组的正确方法。 int arr[]
是正确的方式(更多信息可以在here中找到)
关于错误:由于数组声明不正确而引发错误。甚至在方法声明中定义数组参数。
更正后的代码
#include <stdio.h>
int sumOfArray(int[], int);
int main()
{
int A[]={1,2,3,4,5}; // int A[5]={1,2,3,4,5} too is valid
int sum=0;
int size=sizeof(A)/sizeof(A[0]);
sum=sumOfArray(A,size);
printf("\n The sum of the array is: %d\n", sum);
return 0;
}
int sumOfArray(int arr[], int n)
{
int sum=0,x;
for (x=0; x<n; x++) {
sum+=arr[x];
}
return sum;
}
补充:
int[] arr
在C#等语言中有效,java不会将其与C