(1)、若将一个数组作为实际参数传递给函数,只需不带方括号的数组名即可 数组名代表数组首元素的地址,因此数组名做参数就可以将数组的起始地址传递给形参。另外需要将数组元素的个数也传递给被调用的函数。 程序1.1:调用函数SumArr()计算累加和 (2)、形参数组与实参数组为同一数组 (2)、向函数传递数组的时候,同时通过参数传递数组的元素的个数,有利于提高函数的通用性。 一般变量作参数:传递的是数值,形参的值的改变不影响实参 程序2.1:通过调用函数ModifyArr(),将main()函数中数组a的每个元素变为原来的10倍。 b、把输出数组元素功能也包装成函数 给一个n个元素的数组进行升序,然后再依次输出:分别使用InputArr(),SortArr(),DispArr()实现数组的输入、排序、输出
易懂的数组作为函数参数(C语言)
1、数组做函数参数
若数组a的定义为:int a[10]; 若要将数组a作为实参传递给被调用函数SumArr(), 则调用语句可写成:SumArr(a,10);
函数SumArr()的函数原型如下: int SumArr( int b[],int n ) //表示函数SumArr()期望用形参b来接收一个整型的数组,用形参n来接收数组元素的个数
#include<stdio.h> int SumArr(int arry[],int n); int main() { int a[5] = {1,4,5,7,9}; //求数组a中前5个数的和 printf("%dn",SumArr(a,5)); return 0; } int SumArr(int arry[],int n) { int sum = 0; for(int i = 0;i < n;i++) sum +=arry[i]; return sum; }
(3)、参数声明
(1)、在声明形参数组时,数组元素的个数不需要写在方括号中,如:int SumArr(int array[],int n) {...} //即便方括号中出现数字,编译器也将忽略该数字。在编译器看来,形参array不是一个真正的数组,只是一个可以存放地址的指针变量
SumArr(a,5);//计算数组a的前5个元素之和 SumArr(a,3);//计算数组a的前3个元素之和
2、通过形参数组修改数组元素
数组做参数:传递的是数组的首地址,形参数组和实参数组实质上是同一块内存空间,形参数组发生改变,实参数组也随之发生改变。
a、通过函数修改数组元素#include<stdio.h> void ModifyArr(int arry[],int n);//每个元素变成10倍的函数原型 int main() { int i; int a[5] = {1,2,3,4,5}; printf("原先的数组各元素分别是:n");//未改变前输出 for(i = 0;i < 5;i++) printf("%dn",a[i]); ModifyArr(a,5);//调用函数改变元素值 printf("变为原来的10的元素分别是:n");//改变后输出 for(i = 0;i < 5;i++) printf("%dn",a[i]); return 0; } void ModifyArr(int arry[],int n) { for(int i = 0;i < n;i++) arry[i] *= 10; }
#include<stdio.h> void ModifyArr(int arry[],int n);//每个元素变成10倍的函数原型 void Print(int arry[],int n);//输出函数的原型 int main() { int i; int a[5] = {1,2,3,4,5}; printf("原先的数组各元素分别是:n"); Print(a,5);//调用输出函数 ModifyArr(a,5);//调用改变元素函数 printf("变为原来的10的元素分别是:n"); Print(a,5);//调用输出元素 return 0; } void ModifyArr(int arry[],int n) { for(int i = 0;i < n;i++) arry[i] *= 10; } void Print(int arry[],int n) { int i; for(i = 0;i < n;i++) printf("%dn",arry[i]); }
3、数组排序
#include<stdio.h> #define N 20 void InputArr(int arry[],int n);//输入元素的函数原型 void SortArr(int arry[],int n);//排序函数原型 void DispArr(int arry[],int n);//输出函数的原型 int main(void) { int n; int a[N]; printf("Please enter the integers number:n"); scanf("%d",&n); InputArr(a,n);//输入n个元素存入数组中 SortArr(a,n);//给n个元素进行升序 DispArr(a,n);//输出n个元素 return 0; } void InputArr(int arry[],int n) { int i; printf("Please enter the numbers:n "); for(i = 0;i < n;i++) scanf("%d",&arry[i]); } void SortArr(int arry[],int n) { int i; int j; int temp; for(i = 0;i < n-1;i++) { for(j = i+1;j < n;j++) { if(arry[i] > arry[j]) { temp = arry[i]; arry[i] = arry[j]; arry[j] = temp; } } } } void DispArr(int arry[],int n) { int i; printf("Please display the integers:n"); for(i = 0;i < n;i++) printf("%dn",arry[i]); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算