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. 【MongoDB】MongoDB原理分析、集群搭建(Docker)与简单使用

    一.MongoDB 简介 MongoDB是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.其目的是为WEB应用提供可扩展的高性能数据存 ...

  2. 求求你别再用OkHttp调用API接口了,快来试试这款HTTP客户端库吧

    引言 在日常业务开发中,我们时常需要使用一些其他公司的服务,调用第三方系统的接口,这时就会涉及到网络请求,通常我们可以使用HttpClient,OkHttp等框架去完成网络请求.随着RESTful A ...

  3. 【Azure 应用服务】如何禁止chinacloudsites.cn 访问?

    问题描述 Azure App Service创建后,默认会有一个  Azure App Service创建后,默认会有一个 https://xxxxxxxxxxxxx.chinacloudsites. ...

  4. 【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件

    问题描述 应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件 问题解答 App Service可以通过门户配置Mount Storage, ...

  5. 【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?

    问题一:App Service 的默认启动路径为wwwroot,如何修改到到PHP代码运行目录呢? 如Laravel的启动目录为public/?那如何修改呢? App Service 的默认 PHP ...

  6. Nebula Graph|如何打造多版本文档中心

    本文首发于 Nebula Graph Community 公众号 世界上没有完美的产品,每个不完美的产品都需要一份文档. 为什么需要文档 打造出一款产品后,我们需要一份文档来回答以下问题: 设计这款产 ...

  7. 【专业技能】程序员的软件工程素养之画好 UML 时序图

    目录 前言 一.认识时序图 1.1时序图元素 1.2怎么使用 二.画好时序图 2.1一般步骤 2.2举个例子 2.3推荐工具 三.其它作用 四.文章小结 前言 笔者在本科的时候上过软件工程的专业课,也 ...

  8. Jmeter json断言的使用

    1 添加方式:取样器右键->添加->断言->JSON断言 作用:使用JSON表达式提取实际数据与预期进行比较   2首先我们来了解下断言组件的各个功能: Asset JSON Pat ...

  9. Centos8 ssh配置三台虚拟机免密登录 root 及 非root 稍有差异;SSH的免密登录详细步骤

    为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录. 一.配置SSH 基本语法:假设要用用户名root登录 ...

  10. 1、dubbo的简介

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...