学科分类
目录

参数列表

在函数的定义格式中,函数中的“(参数类型 参数名1,参数类型 参数名2,…,参数类型 参数名n)”被称作参数列表,它用于描述函数在被调用时需要接收的参数。如果函数不需要接收任何参数,则参数列表为空,这样的函数被称为无参函数。相反地,参数列表不为空的函数就是有参函数。接下来分别讲解这两种函数。

1、无参函数

在C语言中,无参函数的定义很简单,先来看一个定义无参函数的示例代码,具体如下:

void func()
{
    printf("这是一个无参函数!\n");
}

上述示例代码中,func()函数就是一个无参函数,参数列表为空。要想执行这个函数,只需要在main()函数中调用它,具体如例1所示。

例1 noPara.c

 1  #include <stdio.h>
 2  void func()
 3  {
 4    printf("这是一个无参函数!\n");
 5  }
 6  int main()
 7  {
 8    func();
 9    return 0;
 10 }

例1运行结果如图1所示。

图1 例1运行结果

从图1可以看出,func()函数被成功调用了。在程序中,第2~5行代码定义了一个无参函数func();第3~5行代码是func()函数的函数体;第8行代码在main()函数中调用该无参函数。

需要注意的是,定义无参函数时,即便函数参数列表为空,函数名后面的小括号也不能省略。小括号是函数的标识,没有小括号,编译器会报错。错误示例代码如下:

void func           //错误,func后面缺少()
{
  printf("这是一个无参函数!\n");
}

上述代码中,定义func()函数时省略了小括号,编译器不认为func是一个函数,会提示在后面添加小括号。

2、有参函数

与无参函数相比,定义有参函数时,需要在函数名称后面的括号中填写参数,所谓的参数相当于就是一个变量,用于接收调用者传入的数据。但是,函数参数在定义时只是一个形式上的变量,并不真实存在,即编译器不会为其分配内存,因此参数列表中的参数名被称为形式参数,简称为形参。调用有参函数时,调用者会向函数传入具体的数据,这些数据是实际存在的,也被称为实际参数,简称为实参。

下面定义一个有参函数swap(),该函数用于实现大小写字母转换,在main()函数中调用swap()函数完成字母大小写转换,具体如例2所示。

例2 swap.c

 1  #include <stdio.h>
 2  char swap(char ch)
 3  {
 4    char c;
 5    if (97 <= ch && ch <= 122)   //小写英文字母的ASCII码值为97~122
 6      c = ch - 32;  //大写英文字母ASCII码值比对应小写字母的ASCII码值小32
 7    else if (65 <= ch && ch <= 90)
 8      c = ch + 32;
 9    else
 10     printf("传入的字符不是英文字母!\n");
 11   return c;
 12 }
 13 int main()
 14 {
 15   char c = swap('a');      //调用swap()函数,将返回值保存到变量c中
 16   printf("%c\n", c);       //输出转换后的结果
 17   return 0;
 18 }

例2运行结果如图2所示。

图2 例2运行结果

在例2中,自定义函数swap()是一个有参函数,它有一个参数ch,ch就是形式参数,第15行代码在main()函数中调用swap()函数,传入了字符‘a’,则字符‘a’就是实际参数。由图2可知,程序成功调用了swap()函数将小写字符‘a’转换为了大写。

需要注意的是,形参和实参之间的数据传递是单向的,即只能由实参传递给形参,不能由形参传递给实参。

点击此处
隐藏目录