gpt4 book ai didi

c - 将数组传递给函数形参

转载 作者:行者123 更新时间:2023-12-02 09:33:57 25 4
gpt4 key购买 nike

我对指针和数组有一些疑问。如有错误,请纠正我。

1)我在网上看到有两种将数组传递给函数的方法。其中一种是函数的形式参数是数组,例如 int a[]第二个,形参是一个指针,如 int *a但是看看这里。在下面的代码中,使用了传递数组的第一种技术。但是我不明白为什么我们将balance作为实际参数传递。我读过数组balance[],它的名字是是“balance”是指向第一个元素的常量指针。因此,balance的值是第一个元素的地址(并且*balance将是数组的第一个元素)。

如果形参是一个指针就好了,因为在这种情况下,地址将被分配为形参指针的值。我不明白为什么我们有一个数组作为形式参数和一个地址作为实际参数(参数)?

 #include <stdio.h>

/* function declaration */
double getAverage(int arr[], int size);

int main ()
{
/* an int array with 5 elements */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;

/* pass pointer to the array as an argument */
avg = getAverage( balance, 5 ) ;

/* output the returned value */
printf( "Average value is: %f ", avg );

return 0;
}

最佳答案

像这样声明一个形式参数

double getAverage(int arr1[], int size);
// ^^

与这样声明相同:

double getAverage(int *arr2, int size);
// ^

编译器以相同的方式解释这两个声明:它允许对 arr1 进行解引用,就像它是一个指针一样,当然它还允许对 arr2 应用方括号运算符> 因为方括号适用于所有指针以及数组。

传递余额也可以通过两种方式完成:您可以按照代码片段中的方式传递它

avg = getAverage( balance, 5 );

或者像指向初始元素的指针:

avg = getAverage( &balance[0], 5 );

同样,这两个调用彼此相同。

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

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