C语言自定义函数

C语言一共只有32个关键字,9种控制语句,程序书写自由。那么大家知道C语言自定义函数是什么呢?下面一起来看看!

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。

无参函数的定义

如果函数不接收用户传递的数据,那么定义时可以不带参数。如下所示:

返回值类型 函数名(){

函数体

}

说明:

返回值类型可以是C语言中的任意数据类型,例如 int、float、char 等。

函数名是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。

函数体是函数需要执行的代码。即使只有一个语句,也要由{ }包围。

在函数体中使用return语句返回数据。

例如,定义一个函数,计算1加到100的结果:

int sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}

计算结果保存在变量sum中,通过return语句返回。sum为int型,所以返回值类型也必须为int,要一一对应。

return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。

将上面的代码补充完整:

#includeint sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}int main(){ int a = sum(); printf("The sum is %d

", a); return 0;}

运行结果:

The sum is 5050

函数不能嵌套定义,main 也是一个函数定义,要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 只能在 main 前面。

注意:main 是函数定义,不是函数调用。当可执行文件加载到内存后,系统从 main 函数开始执行,也就是说,系统会调用我们定义的 main 函数。

无返回值函数

有的函数不需要有返回值,或者返回值类型不确定(很少见),那么用void表示,例如:

void hello(){ printf ("Hello,world

"); //没有返回值就不需要 return 语句}

void是C语言中的一个关键字,表示空类型或无类型,绝大部分情况下也就意味着没有 return 语句。

有参函数的定义

如果函数需要接收用户传递的数据,那么定义时就要带参数。如下所示:

返回值类型 函数名(参数列表){

函数体

}

用户数据通过“参数列表”传递给函数,供函数处理。例如,定义一个函数求两个数中的`最大值:

int max(int a, int b){ if (a>b){ return a; }else{ return b; }}

参数(Parameter)本质上也是变量,定义时要指明参数类型和参数名称。参数列表中可以定义一个或多个参数,多个参数之间用逗号,分隔。参数列表中给出的参数可以在函数体中使用。

调用 max() 函数时可以直接传递整数:

int n = max(10, 20);

也可以传递变量:

int a = 10, b = 20;

int n = max(a, b);

也可以整数和变量一起传递:

int a = 10;

int n = max(a, 20);

变量 n 得到的值都是20。

函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。注意:实参和形参的类型、数目必须一致。

将上面的代码补充完整:

#includeint max(int a, int b){ if (a>b){ return a; }else{ return b; }}int main(){ int num1, num2, maxVal; printf("Input two numbers: "); scanf("%d %d", &num1, &num2); maxVal = max(num1, num2); printf("The max number: %d

", maxVal); return 0;}

运行结果:

Input two numbers: 100 200

The max number: 200

定义max时,变量a、b的值都是未知的;调用max时,分别将num1、num2的值传递给a、b,类似于:

a=num1;

b=num2;

return 语句可以有多个,可以在函数体的任意位置。在max中,根据 if 的判断结果来执行不同的 return 语句。

函数一旦遇到 return 语句就返回(停止执行),后面的所有语句都不会被执行到,例如:

int max(int a, int b){ int n = (a>b) ? a : b; return n; printf("Function is performed

");}

第4行代码是多余的,永远没有执行的机会。

c语言自定义函数返回值的作用,C语言自定义函数相关推荐

  1. Python函数返回值的作用

    在程序开发中,有时候会希望一个函数执行程序结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理. 返回值 是函数完成工作后,最后给调用者的一个结果. 在函数中使用return关键字可以返回 ...

  2. c语言自定义函数返回值的作用,C语言中return用法?

    return 的作用是结束正在运行的函数,并返回函数值.return后面可以跟一个常量,变量,或是表达式. 函数的定义一般是这样的,例如: int a(int i)//第一个int是函数的返回值的类型 ...

  3. c语言函数返回值存放数组,C语言函数返回数组

    C编程语言不允许返回整个数组作为函数的参数.但是,您也可以返回一个指针,没有索引到一个数组中指定数组的名称.你将学习在下一章节中,这样你就可以跳过这一章,直到你理解这个概念在C中的指针的指针 如果你想 ...

  4. python sort函数返回值_如何使用python sort函数?

    不知道大家在做项目时候,有没有遇到这个函数,记得小编第一次看到这个函数,一直纳闷这个函数的使用方法,而后查询了下,今日,小编再一次遇到这个函数,于是,就做了一番整理,内容请看下文. 与sort()函数 ...

  5. python中len函数返回值为int吗_Python len()函数

    目录 描述 语法 参数说明 举例 1. 当参数是序列类型对象(字符.字符串.列表.元组或者是字典)时: 2. 当参数是非序列对象时: 注意事项 描述 len函数返回序列类型对象(字符或字符串.元组.列 ...

  6. C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  7. C语言rewind函数返回值为空,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 高手啊,我试了,结果是回到文件头了,把123覆盖了,为ABC 但我这个程序就能直接不关闭文件而用rewind函数到开头,你帮忙看看, //二进制文件的输入 ...

  8. c语言自定义函数多个返回值,C语言函数返回值

    C语言函数返回值教程 如果,我们希望函数不返回任何值,那么我们需要显式的指明其返回类型为 C语言函数不返回值 语法 void funcName(paramType1 param1, paramType ...

  9. c语言指针,return以及函数返回值

    指针作为c语言的精华所在所以会多学习几天来扎实的掌握 void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容 ...

  10. C语言 const 修饰函数返回值 - C语言零基础入门教程

    目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 二.const 修饰在函数名前面 三.const 修饰在函数名后面 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

最新文章

  1. 简单分析算法的时间复杂度
  2. CSP-S2019游记
  3. Mathcad Prime 下载 安装 与 和谐教程
  4. 用WT516P6Core离线语音模块在烧录和连接MCU时要注意避开的坑,要不挠掉头发也钻不出来!我差点套进去了,还好他们技术人员给力!把我给扯出来了!做了一个踩坑记录分享给大家
  5. php免登录接口,PHPWind 8.0 论坛免登陆发布接口发布
  6. 2020计算机网络基础与应用,2020年国防科技大学硕士研究生考试F1107计算机网络基础考试大纲...
  7. keras实现DCGAN生成mnist原代码
  8. 查看GCC编译优化的具体选项开关
  9. 由于改 UOM conversion 导致库存数量和财务上的数据错误
  10. 会计中运用计算机知识点,电算化会计知识点..doc
  11. 关于Win10的powerdesigner16的缩放问题,字体和图标
  12. 原生js实现对未来dom的事件绑定
  13. java嵌套for循环基础练习 -空心金字塔
  14. 软件测试V模型和W模型的区别
  15. docker内debian安装php7.2 configure: error: Cannot find OpenSSL‘s <evp.h>
  16. 【深度学习图像识别课程】毕业项目:狗狗种类识别(1)环境准备
  17. 走出心理舒适区的七个最佳方法
  18. 新手怎样自己DIY一套音质不错的音响?
  19. linux内核默认imx6速率配置,iTOP-iMX6开发板-设备树内核-缺省文件文件的配置
  20. 转载:23种设计模式整理(很全)

热门文章

  1. mysql判断是否为分区表_MySQL 分区表
  2. 计算机系统加载失败怎么回事,驱动加载失败怎么办,驱动加载失败的原因和解决方法...
  3. 如何用计算机制作海报,稿定设计如何制作海报 一键生成海报的方法
  4. 《大话设计模式》学习笔记:
  5. 详解华硕电脑asus安装win7系统教程
  6. java 免费发短信_java实现发短信功能---腾讯云短信
  7. 抖音小程序开发所遇到的问题
  8. Selenium html之于ul标志代码分析与使用
  9. 哈工大计算机系统实验三——二进制炸弹
  10. 如何在CentOS 7上安装Elasticsearch,Logstash和Kibana(ELK堆栈)