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
ICP备案:
公安联网备案: