C 语言函数完全指南:创建、调用、参数传递、返回值解析

C 语言中的函数

函数是一段代码块,只有在被调用时才会运行。

您可以将数据(称为参数)传递给函数。

函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。

预定义函数

事实证明,您已经知道什么是函数了

例如,main() 是一个函数,用于执行代码,printf() 也是一个函数,用于向屏幕输出/打印文本:

c 复制代码
int main() {
  printf("Hello World!");
  return 0;
}

创建函数

要创建(通常称为声明)您自己的函数,请指定函数的名称,然后是括号 () 和花括号 {}

语法:

c 复制代码
void myFunction() {
  // 要执行的代码
}

示例解释:

  • myFunction() 是函数的名称
  • void 意味着该函数没有返回值
  • 在函数内(主体),添加代码定义函数应该做什么

调用函数

声明的函数不会立即执行。它们被"保存以便以后使用",并在被调用时执行。

要调用函数,请编写函数的名称,后跟两个括号 () 和分号 ;

在以下示例中,当调用 myFunction() 时,它用于打印文本(操作):

c 复制代码
// 创建一个函数
void myFunction() {
  printf("我刚被执行了!");
}

int main() {
  myFunction(); // 调用函数
  return 0;
}

// 输出 "我刚被执行了!"

函数可以被多次调用:

c 复制代码
void myFunction() {
  printf("我刚被执行了!");
}

int main() {
  myFunction();
  myFunction();
  myFunction();
  return 0;
}

// 我刚被执行了!
// 我刚被执行了!
// 我刚被执行了!

C 语言中的函数参数

参数和参数

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

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

语法:

c 复制代码
returnType functionName(parameter1, parameter2, parameter3) {
  // 要执行的代码
}

以下函数接受一个名为 name 的字符串参数。当调用该函数时,我们会传递一个名字,用于在函数内部打印 "Hello" 和每个人的名字。

c 复制代码
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 是参数,而 Liam、JennyAnja 是参数。

多个参数

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

c 复制代码
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.

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

将数组作为函数参数传递

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

c 复制代码
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 关键字:

c 复制代码
int myFunction(int x) {
  return 5 + x;
}

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

// 输出 8 (5 + 3)

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

c 复制代码
int myFunction(int x, int y) {
  return x + y;
}

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

// 输出 8 (5 + 3)

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

c 复制代码
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)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关推荐
醉颜凉24 分钟前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
hunandede31 分钟前
FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
c++·ffmpeg·音视频
夜色呦1 小时前
现代电商解决方案:Spring Boot框架实践
数据库·spring boot·后端
爱学习的大牛1231 小时前
通过vmware虚拟机安装和调试编译好的 ReactOS
c++·windows内核
爱敲代码的小冰1 小时前
spring boot 请求
java·spring boot·后端
java小吕布2 小时前
Java中的排序算法:探索与比较
java·后端·算法·排序算法
tumu_C2 小时前
C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
c++·开源
杜若南星2 小时前
保研考研机试攻略(满分篇):第二章——满分之路上(1)
数据结构·c++·经验分享·笔记·考研·算法·贪心算法
Neophyte06083 小时前
C++算法练习-day40——617.合并二叉树
开发语言·c++·算法
Goboy3 小时前
工欲善其事,必先利其器;小白入门Hadoop必备过程
后端·程序员