# C传递数组给函数
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。
### 方式 1
形式参数是一个指针(您可以在下一章中学习到有关指针的知识):
```
void myFunction(int *param)
{
.
.
.
}
```
### 方式 2
形式参数是一个已定义大小的数组:
```
void myFunction(int param[10])
{
.
.
.
}
```
### 方式 3
形式参数是一个未定义大小的数组:
```
void myFunction(int param[])
{
.
.
.
}
```
## 实例
现在,让我们来看下面这个函数,它把数组作为参数,同时还传递了另一个参数,根据所传的参数,会返回数组中各元素的平均值:
```
double getAverage(int arr[], int size)
{
int i;
double avg;
double sum;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = sum / size;
return avg;
}
```
现在,让我们调用上面的函数,如下所示:
## 实例
```
#include <stdio.h>
/* 函数声明 */
double getAverage(int arr[], int size);
int main ()
{
/* 带有 5 个元素的整型数组 */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
/* 传递一个指向数组的指针作为参数 */
avg = getAverage( balance, 5 ) ;
/* 输出返回值 */
printf( "平均值是: %f ", avg );
return 0;
}
double getAverage(int arr[], int size)
{
int i;
double avg;
double sum=0;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = sum / size;
return avg;
}
```
当上面的代码被编译和执行时,它会产生下列结果:
~~~
平均值是: 214.400000
~~~
>[danger]您可以看到,就函数而言,数组的长度是无关紧要的,因为 C 不会对形式参数执行边界检查。
- 空白目录
- 第一章 c语言简介
- 1 通俗地理解什么是编程语言
- 2 C语言究竟是一门怎样的语言
- 第二章 算法简介&基本语法
- 1 算法简介
- 2 C 程序结构
- 3 C 基本语法
- 第三章 数据类型
- 1 数据类型
- 2 变量
- 3 常量
- 第四章 运算符
- 1 算术运算符
- 2 关系运算符
- 3 逻辑运算符
- 4 位运算符
- 5 赋值运算符
- 6 杂项运算符(其他运算符)
- 7 c语言中的运算符优先级
- 第五章 控制流
- 1 判断语句
- 2 switch语句
- 3 循环语句
- 4 流程控制相关案例
- 第六章 指针
- 1 c语言指针概述
- 2 指针的算术运算
- 3 指针数组
- 4 指向指针的指针
- 5 传递指针给函数
- 6 从函数返回指针
- 第七章 函数
- 1 函数的语法
- 2 作用域规则
- 3 形参与实参
- 第八章 数组
- 1 C语言中的数组
- 2 多维数组
- 3 传递数组给函数
- 4 从函数返回数组
- 第九章 指针
- 1 分钟彻底理解C语言指针的概念
- 2 C语言指针变量的定义和使用
- 3 C语言指针变量的运算(加法、减法和比较运算)
- 4 C语言数组指针(指向数组的指针)
- 5 C语言字符串指针(指向字符串的指针)
- 第十章 结构体
- 第十一章 练习
- 第十二章 文件操作
- 第十三章 文件操作2