C语言自定义函数

--1-- 自定义函数定义
1.1 无参无返回值函数
1.2 无参有返回值函数
1.3 有参无返回值函数
1.4 有参有返回值函数
--2-- 函数的参数
2.1 形式参数介绍和使用
2.2 实际参数介绍和使用
2.3 函数的参数传递过程
--3-- 函数的声明及调用
3.1 函数的声明
3.2 函数的调用

-----------------------------

【写在开头:】

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

自定义函数分为:

无参无返回值函数

无参有返回值函数

有参无返回值函数

有参有返回值函数

书写格式:

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

函数体;

}

函数从定义到使用分三步:

1、声明     2、定义函数  3、调用函数

--1-- 自定义函数定义

1.1 无参无返回值函数

定义格式

一般形式:

  void 函数名(){

  声明部分; //定义局部变量

  语句;

  }

如:

void sum(){
//语句
}

1.2 无参有返回值函数

定义格式

一般形式:

  返回值类型  函数名(){

  声明部分;

  语句;

  return 返回值类型:变量或常量;

  }

如:

int sum(){
return + ;
}

1.3 有参无返回值函数

定义格式

一般形式:

  void 函数名(形式参数表列){

  声明部分;

  语句;

  }

如:

void sum(int x, int y){
//运算
}

1.4 有参有返回值函数

定义格式

一般形式:

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

  声明部分;

  语句;

  return 返回值类型变量或常量;

  }

如:

int sum(int x, int y){
//运算
return x + y;
}

--2-- 函数的参数

2.1 形式参数介绍和使用

定义函数的时候,函数名后面小括号中的参数,简称行参。

/**
* 自定义sum函数
*
* @param x 形参1
* @param y 行参2
*
* @return 返回运算结果
*/
int sum(int x, int y){
//运算
return x + y;
}

注意:

1)形参定义后,并不会立即分配空间

  在函数被调用的时候才会真正的分配存储空间

2)如果有多个形参,则用逗号“,”隔开

3)形参的类型可以不相同

4)在函数中不能定义和形参同名的变量

形参只出现在函数定义中,在整个函数体内部都可以使用,离开函数则不能再使用。

2.2 实际参数介绍和使用

调用函数时,函数名后面小括号的参数,简称实参。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

形参和实参的功能是作数值的传递。发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数数据的传送。

int main(int argc, const char * argv[]) {
int sum(int x, int y); //函数声明 int result = sum(, ); //此处3, 5是实参 return ;
} /**
* 自定义sum函数
*
* @param x 形参1
* @param y 行参2
*
* @return 返回运算结果
*/
int sum(int x, int y){
//运算
return x + y;
}

注意:

实参可以是变量,也可以是常量,也可以是表达式。

主调函数和被调函数是相对而言的。

2.3 函数的参数传递过程

1)形参变量只有在被调用时才分配存储空间,在调用结束时,即刻释放所分配的内存单元。

2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传递给形参。

  因此应预先用赋值,输入等方法使实参获得确定的值。

3)实参和形参在数量、类型、顺序上应严格一致。

--3-- 函数的声明及调用

3.1 函数的声明

在主调函数中,调用某被调函数之前应对该被调函数进行说明(声明)。如果不进行声明,则要将被调函数写在主调函数上方。

一般形式:

  返回值类型  被调函数名(类型 形参,类型 形参…);

  返回值类型 被调函数名(类型,类型…);

    int sum(int x, int y); //函数声明

3.2 函数的调用

一般形式为:

函数名 (实参表列);

    int result = sum(, ); //调用sum(int, int)函数

注意:

1)函数表达式

  函数作为表达式中的一项出现在表达式中

  m = max(34,10)+10;

2)函数调用作为另外一个函数的实参

3)函数的嵌套调用

  max(max(34, 44), 299);

4)函数名不能和变量名同名

    int sum = sum(, ); //错 函数名不能和变量名同名

【写在结尾:】

『封装,作为面向对象的特性之一,隐藏了代码的内部细节,提供一个对外的接口。C语言虽然是一个面向过程的语言,但是可以将一些常用的自定义函数封装一个自己的工具类,方便重用』

C语言-自定义函数的更多相关文章

  1. 模板语言 自定义函数simple_tag

    模板语言自带的一些处理函数:通过管道符来处理 帮助方法:{{ item.event_start|date:"Y-m-d H:i:s"}}  转换成日期时间型{{ bio|trunc ...

  2. C语言 自定义函数按行读入文件

    在之前的博客中 https://www.cnblogs.com/mmtinfo/p/13036039.html 读取一行的getline()函数是GNU 的扩展函数. 这里用自定义函数实现这个功能,从 ...

  3. C语言 自定义函数按行读入文件2

    再改进下上次的读入一行函数,利用zlib库的gzgtec函数读取文件,动态分配内存,最后没有多出空行. 1 #include <stdio.h> 2 #include <stdlib ...

  4. C语言中的自定义函数

    C语言中可以使用系统函数也可以使用自己的函数,就是自定义函数 自定义函数分为四种 第一种:无参无返回值的 函数的声明 void sayH(); 函数的实现 void sayH(){ printf(&q ...

  5. 【C语言】函数和自定义函数

    函数,我之前也提到过一点点内容.其实函数是很好理解的,但是写起来又十分麻烦. 一.     函数引入 我们知道,C源程序是由函数组成的.请看下面的简单函数例子 #include <stdio.h ...

  6. C语言求x的y次方,自定义函数,自己的算法

    我是一名高二中学生,初中时接触电脑,非常酷爱电脑技术,自己百度学习了有两年多了,编程语言也零零散散的学习了一点,想在大学学习计算机专业,所以现在准备系统的学习C语言,并在博客中与大家分享我学习中的心得 ...

  7. T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst、语言版本影响!

    原文:T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响! CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ...

  8. R语言(自定义函数、循环语句、管道函数)

    学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...

  9. C语言基础:自定义函数

    #include <stdio.h>//声明函数的原型:参数名可以省略 void printRectangle();void printfTriangle();void printhh(l ...

随机推荐

  1. iOS AutoLayout自动布局&Masonry介绍与使用实践

    Masonry介绍与使用实践:快速上手Autolayout http://www.cnblogs.com/xiaofeixiang/p/5127825.html http://www.cocoachi ...

  2. netfiler源代码分析之框架介绍

    netfiler框架是在内核协议栈实现的基础上完成的,在报文从网口接收,路由等方法实现基础上使用NF_HOOK调用相应的钩子来进入netfiler框架的处理,如 ip_rcv之后会调用NF_HOOK( ...

  3. selenium项目的实战经验

    以前学习selenium,最接近项目的经验就是写了百度首页和自己开发的一个小网站的脚本,当时觉得差不多可以了.然而这次项目实战才发现还是学到不少知识,毕竟这个网站的专业程度远超过我自己写的,而且复杂程 ...

  4. JPA 2.1 Coverter 注解

    @Converter(autoApply = true) public class VehicleConverter implements AttributeConverter<Vehicle, ...

  5. Oracle知识分类之常见规范

    命名规范 变量规范 1.入参,统一以I_前缀开头,且不能省略IN 2.出参,统一以O_前缀开头 3.局部变量,统一以V_前缀开头 4.常量,统一以CN_前缀开头 5.游标,统一以CUR_前缀开头 组成 ...

  6. Sublime Text的心得经验。 全面

    Sublime Text的心得经验.jikeytang/sublime-text · GitHub

  7. ORM系列之三:Dapper

    目录 1.Dapper 简介 2.Dapper 安装 3.Dapper 使用 Dapper简介 Dapper是一个轻量级的ORM框架,短小精悍,正如其名.对于小项目,使用EF,NHibernate这样 ...

  8. DataTable数据赋值给Model通用方法

    注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...

  9. 移动应用抓包调试利器Charles

    转载:http://www.jianshu.com/p/68684780c1b0 一.Charles是什么? Charles是在 Mac或Windows下常用的http协议网络包截取工具,是一款屌的不 ...

  10. JUnit操作指南-批量执行单元测试(将多个测试类捆绑在一起执行)

    相关链接:https://github.com/junit-team/junit4/wiki/Aggregating-tests-in-suites