数组符号如何在这个程序中有所作为?

时间:2015-02-18 03:14:03

标签: c arrays

所以我有一个简单的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。但那么这里出了什么问题?有什么建议?

非常感谢!

3 个答案:

答案 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

混淆