将数组传递给函数

时间:2017-03-08 03:11:50

标签: c arrays function

#include <stdio.h>
float average(float age[]);

int main()​
{
    float avg, age[] = { 23.4, 55, 22.6, 3, 40.5, 18 };
    avg = average(age); /* Only name of array is passed as       argument. */
    printf("Average age=%.2f", avg);
    return 0;
}

float average(float age[])
{
    int i;
    float avg, sum = 0.0;
    for (i = 0; i < 6; ++i)
   {
        sum += age[i];
   }
avg = (sum / 6);
return avg;
}

如果我遵循相同的惯例, 写

是否正确
int main()
{
    int a[]={1,2,3};
    int a1[]=a;
    ....
}

我可以将a的地址分配到a1here

或者这是正确的

int main()
{
int a[]={1,2,3};
int a1[];
a1=a;
...
}

第二个可能是错误的,因为我已经创建了一个分配了0个空格的数组a1

如果我们可以将它传递给这样的函数 为什么我们不能直接使用它,就像我给出的第一种情况一样

1 个答案:

答案 0 :(得分:2)

在C中,您无法为彼此分配数组。相反,您必须使用指向数组中第一个元素的地址的指针。这是一个显示这个的例子:

/* My array */
int arr[] = {1, 2, 3, 4};

/* pointer which points to the first element of arr[] */
int *ptr = &arr[0];

/* prints out contents of pointer */
for (size_t i = 0; i < sizeof arr / sizeof arr[0]; i++) {
    printf("%d\n", ptr[i]);
}

/* Outputs: 
   1
   2 
   3
   4
*/