C语言 中的 Passing arrays to 函数s

首页 / C语言入门教程 / C语言 中的 Passing arrays to 函数s

如果要在函数中将一维数组作为参数传递,则必须以下三种方式之一声明形式参数,并且所有三种声明方法都会产生类似的结果,因为每个方法都告诉编译器将接收整数指针。类似地,您可以将多维数组作为形式参数传递。

Way-1

形式参数作为指针-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/c-programming/c-passing-arrays-to-functions.html

来源:LearnFk无涯教程网

void myFunction(int *param) {
   .
   .
   .
}

Way-2

形式参数作为大小数组-

void myFunction(int param[10]) {
   .
   .
   .
}

Way-3

形式参数作为未调整大小的数组-

void myFunction(int param[]) {
   .
   .
   .
}

示例

现在,考虑以下函数,该函数将一个数组与另一个参数一起作为参数,并基于传递的参数返回通过该数组传递的数字的平均值,如下所示-

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;
}

现在,让我们调用上述函数,如下所示-

#include <stdio.h>
 
/* 函数声明 */
double getAverage(int arr[], int size);

int main () {

   /* 一个包含 5 个元素的 int 数组 */
   int balance[5]={1000, 2, 3, 17, 50};
   double avg;

   /* 将指向数组的指针作为参数传递 */
   avg=getAverage( balance, 5 ) ;
 
   /* 输出返回值✌️ */
   printf( "Average value is: %f ", avg );
    
   return 0;
}

当上面的代码一起编译并执行时,它会产生以下结果-

Average value is: 214.400000

正如您所看到的,就函数而言,数组的长度并不重要,因为C不对形式参数执行边界检查。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

程序员的数学基础课 -〔黄申〕

从0开始做增长 -〔刘津〕

编译原理实战课 -〔宫文学〕

React Hooks 核心原理与实战 -〔王沛〕

去无方向的信 -〔小麥〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

大型Android系统重构实战 -〔黄俊彬〕

后端工程师的高阶面经 -〔邓明〕

好记忆不如烂笔头。留下您的足迹吧 :)