当前位置:嗨网首页>书籍在线阅读

06-多个参数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.2.1 多个参数

函数可以有多个参数。在调用函数时,只需使用逗号将这些参数分开即可:

n_chars('R', 25);

上述函数调用将两个参数传递给函数n_chars(),我们将稍后定义该函数。

同样,在定义函数时,也在函数头中使用由逗号分隔的参数声明列表:

void n_chars(char c, int n) // two arguments

该函数头指出,函数n_char()接受一个char参数和一个int参数。传递给函数的值被赋给参数c和n。如果函数的两个参数的类型相同,则必须分别指定每个参数的类型,而不能像声明常规变量那样,将声明组合在一起:

void fifi(float a, float b) // declare each variable separately
void fufu(float a, b)        // NOT acceptable

和其他函数一样,只需添加分号就可以得到该函数的原型:

void n_chars(char c, int n); // prototype, style 1

和一个参数的情况一样,原型中的变量名不必与定义中的变量名相同,而且可以省略:

void n_chars(char, int); // prototype, style 2

然而,提供变量名将使原型更容易理解,尤其是两个参数的类型相同时。这样,变量名可以提醒参量和参数间的对应关系:

double melon_density(double weight, double volume);

程序清单7.3演示了一个接受两个参数的函数,它还表明,在函数中修改形参的值不会影响调用程序中的数据。

程序清单7.3 twoarg.cpp

// twoarg.cpp -- a function with 2 arguments
#include <iostream>
using namespace std;
void n_chars(char, int);
int main()
{
    int times;
    char ch;
    cout << "Enter a character: ";
    cin >> ch;
    while (ch != 'q')        // q to quit
    {
        cout << "Enter an integer: ";
        cin >> times;
        n_chars(ch, times); // function with two arguments
        cout << "\nEnter another character or press the"
                " q-key to quit: ";
        cin >> ch;
    }
    cout << "The value of times is " << times << ".\n";
    cout << "Bye\n";
    return 0;
}
void n_chars(char c, int n) // displays c n times
{
    while (n-- > 0)          // continue until n reaches 0
        cout << c;
}

在程序清单7.3的程序中,将编译指令using放在函数定义的前面,而不是函数中。下面是该程序的运行情况:

Enter a character: W
Enter an integer: 50
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
Enter another character or press the q-key to quit: a
Enter an integer: 20
aaaaaaaaaaaaaaaaaaaa
Enter another character or press the q-key to quit: q
The value of times is 20.
Bye

程序说明

程序清单7.3中的main()函数使用一个while循环提供重复输入(并让读者温习使用循环的技巧),它使用cin>>ch,而不是cin.get(ch)或ch = cin.get()来读取一个字符。这样做是有原因的。前面讲过,这两个cin.get()函数读取所有的输入字符,包括空格和换行符,而cin>>跳过空格和换行符。当用户对程序提示作出响应时,必须在每行的最后按Enter键,以生成换行符。cin>>ch方法可以轻松地跳过这些换行符,但当输入的下一个字符为数字时,cin.get()将读取后面的换行符。可以通过编程来避开这种麻烦,但比较简便的方法是像该程序那样使用cin。

n_char()函数接受两个参数:一个是字符c,另一个是整数n。然后,它使用循环来显示该字符,显示次数为n:

while (n-- > 0) // continue until n reaches 0
      cout << c;

程序通过将n变量递减来计数,其中n是参数列表的形参,main()中times变量的值被赋给该变量。然后,while循环将n递减到0,但前面的运行情况表明,修改n的值对times没有影响。即使您在函数main()中使用名称n而不是times,在函数n_chars()中修改n的值时,也不会影响函数main()中n的值。