#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
如果我们可以将它传递给这样的函数 为什么我们不能直接使用它,就像我给出的第一种情况一样
答案 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
*/