C++ 函数参数

Parameters 与 Arguments

信息可以作为 Parameters 参数传递给方法。Parameters 在方法中充当变量。

参数在函数名后面的括号内指定。可以添加任意数量的参数,只需用逗号分隔即可:

语法
  1. void functionName(parameter1, parameter2, parameter3) {
  2. // code to be executed
  3. }

以下函数以一个名为的 fname字符串 作为参数。调用函数时,我们传递一个名称,该名称在函数内部用于打印 "Hello" 和每个人的姓名:

实例
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. void myFunction(string fname) {
  5. cout << fname << " Refsnes\n";
  6. }
  7. int main() {
  8. myFunction("Liam");
  9. myFunction("Jenny");
  10. myFunction("Anja");
  11. return 0;
  12. }

当一个参数被传递给函数时,它被称为 argument 参数。从上面的例子来看:name 是一个 parameter 参数,而LiamJennyAnja 都是 arguments 参数。


默认参数

也可以使用默认参数值,方法是使用等号 (=)。

如果我们在没有参数的情况下调用函数,它将使用默认值("Norway")

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. void myFunction(string country = "Norway") {
  5. cout << country << "\n";
  6. }
  7. int main() {
  8. myFunction("Sweden");
  9. myFunction("India");
  10. myFunction();
  11. myFunction("USA");
  12. return 0;
  13. }

带有默认值的参数通常被称为 "可选参数”。从上面的示例中,country 是可选参数,它使用默认值 ("Norway")。


多个参数

在函数内部,可以添加任意多个数量的参数:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. void myFunction(string fname, int age) {
  5. cout << fname << " Refsnes. " << age << " years old. \n";
  6. }
  7. int main() {
  8. myFunction("Liam", 3);
  9. myFunction("Jenny", 14);
  10. myFunction("Anja", 30);
  11. return 0;
  12. }

请注

意,当您使用多个参数时,函数调用的参数数量必须与参数数量相同,并且参数的传递顺序必须相同。


返回值

前面实例中使用的 void 关键字表示函数不应返回值。如果希望函数返回值,可以使用数据类型(如 intstring 等)而不是 void,并在函数内部使用 return 关键字:

  1. #include <iostream>
  2. using namespace std;
  3. int myFunction(int x) {
  4. return 5 + x;
  5. }
  6. int main() {
  7. cout << myFunction(3);
  8. return 0;
  9. }

本例返回带有 两个参数 的函数之和:

  1. #include <iostream>
  2. using namespace std;
  3. int myFunction(int x, int y) {
  4. return x + y;
  5. }
  6. int main() {
  7. cout << myFunction(5, 3);
  8. return 0;
  9. }

还可以将结果存储在变量中:

  1. #include <iostream>
  2. using namespace std;
  3. int myFunction(int x, int y) {
  4. return x + y;
  5. }
  6. int main() {
  7. int z = myFunction(5, 3);
  8. cout << z;
  9. return 0;
  10. }

传递引用

在上面的实例中,我们在向函数传递参数时使用了普通变量。还可以传递对函数的 引用。当需要更改 arguments 参数的值时,这就很有用了:

  1. #include <iostream>
  2. using namespace std;
  3. void swapNums(int &x, int &y) {
  4. int z = x;
  5. x = y;
  6. y = z;
  7. }
  8. int main() {
  9. int firstNum = 10;
  10. int secondNum = 20;
  11. cout << "Before swap: " << "\n";
  12. cout << firstNum << secondNum << "\n";
  13. swapNums(firstNum, secondNum);
  14. cout << "After swap: " << "\n";
  15. cout << firstNum << secondNum << "\n";
  16. return 0;
  17. }

传递数组

您还可以将 数组 作为参数传递给函数:

  1. #include <iostream>
  2. using namespace std;
  3. void myFunction(int myNumbers[5]) {
  4. for (int i = 0; i < 5; i++) {
  5. cout << myNumbers[i] << "\n";
  6. }
  7. }
  8. int main() {
  9. int myNumbers[5] = {10, 20, 30, 40, 50};
  10. myFunction(myNumbers);
  11. return 0;
  12. }
实例解释

函数 (myFunction) 将数组作为其参数 (int myNumbers[5]),并使用 for 循环遍历数组元素。

main() 内部调用函数时,我们传递 myNumbers 数组,该数组输出数组元素。

注意,调用该函数时,在将其作为参数 myFunction(myNumbers) 传递时,只需使用数组的名称。但是,函数参数 (int myNumbers[5]) 中需要完整声明数组。