C 语言中的函数

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

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

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

预定义函数

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

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

int main() {
printf("Hello World!");
return 0;
}

创建函数

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

语法:

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

示例解释:

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

调用函数

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

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

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

// 创建一个函数
void myFunction() {
printf("我刚被执行了!");
} int main() {
myFunction(); // 调用函数
return 0;
} // 输出 "我刚被执行了!"

函数可以被多次调用:

void myFunction() {
printf("我刚被执行了!");
} int main() {
myFunction();
myFunction();
myFunction();
return 0;
} // 我刚被执行了!
// 我刚被执行了!
// 我刚被执行了!

C 语言中的函数参数

参数和参数

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

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

语法:

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

以下函数接受一个名为 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 是参数,而 Liam、JennyAnja 是参数。

多个参数

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

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 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)

最后

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

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

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

C 语言函数完全指南:创建、调用、参数传递、返回值解析的更多相关文章

  1. Python函数的定义与调用、返回值、参数

    一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...

  2. sqlserver创建,调用 带返回值存取过程

    <1>create: ALTER  proc [dbo].[common_proc] @sql1 varchar(5000), @sql2 varchar(5000) OUTPUT as ...

  3. python学习笔记10(函数一): 函数使用、调用、返回值

    一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...

  4. C语言函数的递归和调用

    函数记住两点: (1)每个函数运行完才会返回调用它的函数:每个函数运行完才会返回调用它的函数,因此,你可以先看看这个函数不自我调用的条件,也就是fun()中if条件不成立的时候,对吧,不成立的时候就是 ...

  5. c语言 函数传输传递的三种方式(值、指针、引用)

    本文摘自<彻底搞定c指针> 一.三道考题开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, in ...

  6. shell函数(调用、返回值,返回值获取)

    Shell函数返回值,常用的两种方式:return,echo 1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回.示例1: [devadmin@swa ...

  7. python函数知识一 函数初始、定义与调用、返回值、参数和函数的好处+菜中菜

    第四章 函数 1.函数初识: def :关键字 -- 定义 函数名:和变量的定义方式一样 (): 用于参数传递,: 形参:函数的定义中()内的是形参 实参:调用的()内是实参 传参:调用时将实参传递给 ...

  8. JavaScript 函数——语法,调用,返回值,局部变量,全局变量,未声明变量

    JavaScript 函数是被设计为执行特定任务的代码块. JavaScript 函数会在某代码调用它时被执行. ㈠函数 ⑴什么是函数 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. ⑵ ...

  9. Ubuntu 18.04下Intel SGX应用程序程序开发——获得OCALL调用的返回值

    本文中,我们介绍在Enclave函数中调用不可信OCALL函数,并获得OCALL函数的返回值. 1. 复制SampleEnclave示例并建立自己的OcallRetSum项目 SampleEnclav ...

  10. (转)函数中使用 ajax 异步 同步 返回值错误 主函数显示返回值总是undefined -- ajax使用总结

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAloAAAE0CAIAAAB7LwoKAAAgAElEQVR4nO2dy6sc152A6+/R2mXwSn ...

随机推荐

  1. J-link虚拟串口波特率异常问题

    J-LINK V9以上自带了虚拟串口,使用非常方便. 但最近遇到问题,发现打开虚拟串口时电脑接收到的是乱码.到官网搜索了一下,发现最高波特率是115200,我使用的是256000,于是降低波特率. 官 ...

  2. CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂

    中间件 1.服务器中间件:nginx,apache 2.数据库中间件:介于应用程序和数据库之前的,MyCat 3.消息队列中间件:kafka,rabbitmq,Rocketmq CGI 1.CGI是一 ...

  3. Centos8上安装python3.X

    一.更新yum源 命令:yum update 二.更新依赖环境 命令:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sq ...

  4. HTTP1.0/HTTP1.1/HTTP2.0的演进

    HTTP1.0 短连接,每次请求都需要重新建立连接 不支持断点续传 HTTP1.1 支持长连接,同一个客户端连接可保持长连接,请求可在连接中顺序发出. 查看http请求头中有keepalive 参数 ...

  5. You can't specify target table for update in FROM clause

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  6. Emqx高可用架构

    目录 优化前架构 主要问题 haproxy问题 优化后架构 优化功能点 emq版本升级 linux系统调优 haproxy调优 测试工具 依赖安装 配置erl环境变量 安装压测软件 测试指令与结果展示 ...

  7. dos-基础用法

    DOS(磁盘操作系统)是一个早期的基于命令行的操作系统,尽管现代操作系统已经发展为图形用户界面(GUI),但是了解和掌握一些基本的DOS命令仍然非常有用,尤其是在处理批处理脚本.网络管理或者在没有图形 ...

  8. vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面

    vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面 问题 $store的变量不能跳转,有跳转插件也 ...

  9. npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案

    npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案 为什么 在安装依赖包的时候,会有依赖包的冲突 比如A包引用了C的1.0版本 B包依赖了C的1.1版本 win ...

  10. powershell 输入命令 不执行 保留输入内容 Ctrl + C

    为什么 powershell 输入命令 不执行 保留输入内容 Ctrl + C 为了解释某些命令,但是不执行 比如 我说 dc命令就是 xxxxxxx 我就先输入 xxxxxxxx然后ctrl + c ...