gpt4 book ai didi

c - 将数组传递给函数

转载 作者:行者123 更新时间:2023-11-30 20:54:13 29 4
gpt4 key购买 nike

#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的地址分配给a1吗

或者这是正确的

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

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

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

最佳答案

在 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
*/

关于c - 将数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42662279/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com