首页 > 编程笔记 > C语言笔记 阅读:9

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

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

运行结果为:
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

相关文章