Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C 函数参数


参数和实参

信息可以通过参数传递给函数。参数在函数内部充当变量。

参数在函数名之后,括号内指定。您可以添加任意数量的参数,用逗号隔开即可。

语法

返回值类型 函数名(参数1, 参数2, 参数3) {
  // 要执行的代码
}

在下面的示例中,该函数接收一个 字符串,使用 name 作为参数。当调用该函数时,我们传递一个姓名,该姓名在函数内部使用,用于打印 "Hello" 和每个人的姓名。

示例

void myFunction(char name[]) {
  printf("Hello %s\n", name);
}

int main() {
  myFunction("Liam");
  myFunction("Jenny");
  myFunction("Anja");
  return 0;
}

// Hello Liam
// Hello Jenny
// Hello Anja
亲自尝试 »

当一个 参数 传递给函数时,它被称为 实参。因此,从上面的示例中:name 是一个 参数,而 LiamJennyAnja实参


多个参数

在函数内部,您可以添加任意数量的参数。

示例

void myFunction(char name[], int age) {
  printf("Hello %s. You are %d years old.\n", name, age);
}

int main() {
  myFunction("Liam", 3);
  myFunction("Jenny", 14);
  myFunction("Anja", 30);
  return 0;
}

// Hello Liam. You are 3 years old.
// Hello Jenny. You are 14 years old.
// Hello Anja. You are 30 years old.
亲自尝试 »

如果我们考虑 "计算数字的和" 上一页面的示例,我们可以通过使用函数参数来创建更可持续的程序。

示例

void calculateSum(int x, int y) {
  int sum = x + y;
  printf("The sum of %d + %d is: %d\n", x, y, sum);
}

int main() {
  calculateSum(5, 3);
  calculateSum(8, 2);
  calculateSum(15, 15);
  return 0;
}
亲自尝试 »

关于参数的说明

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



将数组作为函数参数传递

您也可以将 数组 传递给函数。

示例

void myFunction(int myNumbers[5]) {
  for (int i = 0; i < 5; i++) {
    printf("%d\n", myNumbers[i]);
  }
}

int main() {
  int myNumbers[5] = {10, 20, 30, 40, 50};
  myFunction(myNumbers);
  return 0;
}
亲自尝试 »

示例解释

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

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

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


返回值

在前面的示例中使用的 void 关键字表示该函数不应返回值。如果您希望函数返回值,可以使用数据类型(如 intfloat 等)代替 void,并在函数内部使用 return 关键字。

示例

int myFunction(int x) {
  return 5 + x;
}

int main() {
  printf("Result is: %d", myFunction(3));
  return 0;
}

// 输出 8 (5 + 3)
亲自尝试 »

此示例返回具有 两个参数 的函数的总和。

示例

int myFunction(int x, int y) {
  return x + y;
}

int main() {
  printf("Result is: %d", myFunction(5, 3));
  return 0;
}

// 输出 8 (5 + 3)
亲自尝试 »

您也可以将结果存储在变量中。

示例

int myFunction(int x, int y) {
  return x + y;
}

int main() {
  int result = myFunction(5, 3);
  printf("Result is = %d", result);
  return 0;
}
// 输出 8 (5 + 3)
亲自尝试 »

如果我们再次考虑 "计算数字的和" 示例,我们可以使用 return,并将结果存储在不同的变量中。这将使程序更加灵活,更容易控制。

示例

int calculateSum(int x, int y) {
  return x + y;
}

int main() {
  int result1 = calculateSum(5, 3);
  int result2 = calculateSum(8, 2);
  int result3 = calculateSum(15, 15);

  printf("Result1 is: %d\n", result1);
  printf("Result2 is: %d\n", result2);
  printf("Result3 is: %d\n", result3);

  return 0;
}
亲自尝试 »

提示: 如果您有很多 "结果变量",最好将结果存储在数组中。

示例

int calculateSum(int x, int y) {
  return x + y;
}

int main() {
  // 创建一个数组
  int resultArr[6];

  // 使用不同的实参调用函数,并将结果存储在数组中
  resultArr[0] = calculateSum(5, 3);
  resultArr[1] = calculateSum(8, 2);
  resultArr[2] = calculateSum(15, 15);
  resultArr[3] = calculateSum(9, 1);
  resultArr[4] = calculateSum(7, 7);
  resultArr[5] = calculateSum(1, 1);

  for (int i = 0; i < 6; i++) {
    printf("结果%d 为 = %d\n", i + 1, resultArr[i]);
  }

  return 0;
}
亲自尝试 »

现实生活中的例子

为了演示使用函数的实际例子,让我们创建一个将华氏度转换为摄氏度的程序

示例

// 将华氏度转换为摄氏度的函数
float toCelsius(float fahrenheit) {
  return (5.0 / 9.0) * (fahrenheit - 32.0);
}

int main() {
  // 设置华氏度值
  float f_value = 98.8;

  // 使用华氏度值调用函数
  float result = toCelsius(f_value);

  // 打印华氏度值
  printf("华氏度: %.2f\n", f_value);

  // 打印结果
  printf("将华氏度转换为摄氏度: %.2f\n", result);

  return 0;
}
亲自尝试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.