C语言数组作为函数参数的3种用法(附带实例)
在 C语言程序中,数组作为函数参数可以细分为以下 3 种情况:
例如,输出数组元素。定义一个数组并为其赋值,然后将数组元素作为函数实参进行传递。自定义函数体中,形参得到实参传递的数值后,将其显示输出。
例如,使用数组名作为函数的实参和形参,实现数组的赋值和输出。
运行结果为:
例如,不使用库函数,实现字符串连接功能,将函数的参数声明为长度可变数组。具体代码如下:
- 数组元素作为函数参数;
- 数组名作为函数参数;
- 可变长度数组作为函数参数。
C语言数组元素作为函数参数
数组元素作为函数实参,与普通变量作为函数实参一样,是单向的值传递。例如,输出数组元素。定义一个数组并为其赋值,然后将数组元素作为函数实参进行传递。自定义函数体中,形参得到实参传递的数值后,将其显示输出。
#include<stdio.h> void ShowMember(int iMember); /* 声明 ShowMember 函数,形参为一个整型数 */ int main() { int iCount[10]; /* 定义一个整型数组 */ int i; for(i=0;i<10;i++) /* for 循环,对数组元素依次赋值 */ { iCount[i]=i; } for(i=0;i<10;i++) /* 循环调用 ShowMember 函数 */ { ShowMember(iCount[i]); /* 函数实参为数组元素 */ } return 0; } void ShowMember(int iMember) /* 自定义 ShowMember 函数,形参为一个整型数 */ { printf("Show the member is %d\n",iMember); /* 输出数据 */ }运行结果为:
Show the member is 0
Show the member is 1
Show the member is 2
Show the member is 3
Show the member is 4
Show the member is 5
Show the member is 6
Show the member is 7
Show the member is 8
Show the member is 9
- 首先进行函数声明,在主函数 main() 中定义一个整型数组和一个整型变量 i;
- 使用 for 循环语句对数组中的元素依次赋值,在这里,变量 i 既是循环条件,也是引用数组元素的下标;
- 通过 for 循环语句调用 ShowMember() 函数,显示数据。
C语言数组名作为函数参数
C语言中,数组名表示的是数组中第一个元素的地址。因此,当数组名作为函数实参时,传递的是数组的地址。这点和数组元素做实参时是不一样的,注意体会其不同。例如,使用数组名作为函数的实参和形参,实现数组的赋值和输出。
#include<stdio.h> void Evaluate(int iArrayName[10]); /* 声明赋值函数,形参为一个数组名 */ void Display(int iArrayName[10]); /* 声明输出函数,形参为一个数组名 */ int main() { int iArray[10]; /* 定义一个具有 10 个元素的整型数组 */ Evaluate(iArray); /* 调用函数,实现数组元素赋值,数组名为实参 */ Display(iArray); /* 调用函数,实现数组元素输出,数组名为实参 */ return 0; } /* 进行数组元素的输出 */ void Display(int iArrayName[10]) /* 定义输出函数,形参为一个数组 */ { int i; for(i=0;i<10;i++) /* 在循环语句中执行数组输出 */ { printf("the member number is %d\n",iArrayName[i]); } } /* 进行数组元素的赋值 */ void Evaluate(int iArrayName[10]) /* 定义赋值函数,形参为一个数组 */ { int i; for(i=0;i<10;i++) /* 在循环语句中执行数组赋值 */ { iArrayName[i]=i; } }
- 程序中,首先对 Evaluate() 函数和 Display() 函数进行声明,在声明语句中可以看到数组名作为形参;
- 在主函数 main() 中定义一个具有 10 个元素的整型数组 iArray;
- 调用 Evaluate() 函数,数组名 iArray 作为函数实参,传递的是数组的地址。在 Evaluate() 函数中,使用数组 iArrayName 作为形参,接受对应的地址空间,并对数组进行赋值操作;
- 调用 Display() 函数,将数组输出,可以看到在函数参数中使用的也是数组名称。
运行结果为:
the member number is 0 the member number is 1 the member number is 2 the member number is 3 the member number is 4 the member number is 5 the member number is 6 the member number is 7 the member number is 8 the member number is 9
C语言可变长度数组作为函数参数
数组作为函数参数时,如果未指明数组大小,就属于长度可变的数组作为函数参数。例如,不使用库函数,实现字符串连接功能,将函数的参数声明为长度可变数组。具体代码如下:
#include<stdio.h> /* 包含头文件 */ void _strcat(char str1[], char str2[]) /* 自定义 strcat 函数,形参为两个长度可变的数组 */ { int i, j; for(i = 0; str1[i] != '\0'; i++); /* 字符数组 1 中循环 */ for(j = 0; str2[j] != '\0'; j++) /* 字符数组 2 中循环 */ str1[i + j] = str2[j]; /* 字符串连接 */ str1[i + j] = '\0'; /* 结束 */ } int main() /* 主函数 main */ { char str1[1100], str2[100]; /* 定义字符数组 */ printf("请输入字符串 1:\n"); /* 提示信息 */ gets(str1); /* 输入字符串 1 */ printf("请输入字符串 2:\n"); /* 提示信息 */ gets(str2); /* 输入字符串 2 */ _strcat(str1, str2); /* 调用函数连接 2 个字符串 */ printf("连接之后的字符串是:%s\n", str1); /* 显示连接后的字符串 */ return 0; /* 程序结束 */ }运行程序,输出结果为:
请输入字符串 1: Cyuyan 请输入字符串 2: zhongwenwang 连接之后的字符串是:Cyuyanzhongwenwang