在 C语言程序中,数组作为函数参数可以细分为以下 3 种情况: 数组元素作为函数参数; 数组名作为函数参数; 可变长度数组作为函数参数。 C

  • Home
  • 礼包中心
  • C语言数组作为函数参数的3种用法(附带实例)

在 C语言程序中,数组作为函数参数可以细分为以下 3 种情况:

数组元素作为函数参数;

数组名作为函数参数;

可变长度数组作为函数参数。

C语言数组元素作为函数参数

数组元素作为函数实参,与普通变量作为函数实参一样,是单向的值传递。

例如,输出数组元素。定义一个数组并为其赋值,然后将数组元素作为函数实参进行传递。自定义函数体中,形参得到实参传递的数值后,将其显示输出。

#include

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

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 /* 包含头文件 */

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