Java培训、Android培训、iOS培训、.Net培训、期待与您交流!

(以下内容是对黑马苹果入学视频的个人知识点总结)

(一)函数的定义

1> 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,可以说C语言程序是由函数构成的。

2>函数的目的是将一个常用的功能封装起来,方便以后调用。

3>定义一个函数需要先定义函数名,再书写函数体(是函数内包含的代码,实现什么功能)。

(二)函数的使用

1>什么情况下定义函数:添加一个常用的新功能

2>函数的定义格式

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

{

函数体 // 实现一些特定的功能

}

3>定义函数需要明确的东西, 起一个有意义的函数名.

4>函数的调用

①函数调用都是直接用函数名

②当程序执行到函数时,想到与通过函数名转到定义的函数体进行计算。

③函数体中的return 是有返回值的,如果为空返回零,否则返回函数值。 也是返回原函数的标志,默认的返回值是int。

返回值注意点

1> void代表没有返回值

2> 如果没有明确说明返回值类型,默认是返回int类型

3> 就算明确声明了返回值类型,也可以不返回任何值

#include <stdio.h>

int printLine()
{
printf("-------------\n");
return ;
} int average(int num1, int num2)
{
return (num1 + num2)/;
} int main()
{ printLine(); int a = ;
int b = ; int c = average(a, b); printf("c is %d\n", c); int a1 = ;
int b1 = ; int d = average(a1, b1);
printf("d is %d\n", d); return ;
}

当第一函数后,每次使用同样功能必须要再重新定义,可以直接用。节省代码。

(三)函数的参数

1>形式参数:定义函数时函数名后面中的参数,简称形参

2>实际参数:调用函数式传入的具体数据,简称实参

3>实参个数必须等于形参个数

4>函数体内部不能定义和形参一样的变量

5>如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值

6>一个函数可以没有形参,也可以有无限多个形参

(四)定义函数的步骤

  1. 明确函数作用,起一个有意义的函数名称
  2. 明确函数的参数和返回值

(五)函数的注意点

1.默认情况下,不允许有函数的名称一样

2.函数不能嵌套定义

3.函数不能重复定义,但是可以重复声明

4.如果有函数的声明,没有函数的定义

1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义

2> 链接报错,因为链接的时候会检测函数是否定义

 /*
 求两个整数的差
 打印一条横线
 打印N条横线 定义函数的步骤
1> 根据函数的作用,起一个有意义的名称
2> 确定函数的形参个数
3> 确定函数的返回值
*/
#include <stdio.h> void printLines(int n)
{
for (int i = ; i<n; i++)
{
void printLine();
}
} void printLine()
{
printf("-------------------\n");
} int minus(int a, int b)
{
return a - b;
} int main()
{
printLines();
printf("%d\n", minus(, )); return ;
}

(六)#include

作为预处理指令,纯粹是拷贝文件。是将库中和自己定义的一些函数引进来,是用来实现多文件的。通常公司中得一个文件内容太多,不利于阅读,多人修改同意个文件容易出错误,因此可以用两种文件.h和.c通过前面的声明和后面的实现分工合作来实现多文件程序。都是通过#include来引用的。

简单来说

1> 作用:拷贝右边文件的所有内容到#include所在的位置

2> 自定义的文件用"",系统自带的文件用<>

3> #include <stdio.h>的目的:拷贝printf函数的声明

黑马程序员——C语言基础 函数的更多相关文章

  1. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  2. 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...

  3. 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1>  简单介绍一下scanf函数   这是在 ...

  4. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  5. 黑马程序员——C语言基础 枚举 宏定义 自定义 static exterm

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)枚举 1)枚举类型的定义 枚举是C语言中的一种基本数据类型,并不是构 ...

  6. 黑马程序员——C语言基础 指针

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)指针 首先指针是C语言中非常重要的数据类型,如果你说C语言中除了指针 ...

  7. 黑马程序员——C语言基础 char字符 数组

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)char类型 1)存储细节 ASCII单字节表(双字节GBK\GB2 ...

  8. 黑马程序员——C语言基础 变量类型 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...

  9. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

随机推荐

  1. hdu-5525 Product(费马小定理)

    题目来源:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=644&pid=1003 前面用奇偶性约掉2, ...

  2. an interview question(2)

    感觉现在好多面试题还是很注重基础的,今天面试时就遇到这题,回来一查后才知道此题是国内某著名通信公司的一道机试题:) 给定一个数组input[ ],如果数组长度n为奇数,则将数组中最大的元素放到 out ...

  3. 使用时间戳和sequence生成主键的function

    create or replace function fn_getKeyreturn varchar2is  k varchar2(30);begin  select to_char(sysdate, ...

  4. linux下添加环境变量

    我安装完 RedHat Linux 5 之后,在终端使用一些命令,如: ifcinfig 查看本机的IP,发现不能使用此命令,提示说“command not found”,这该怎么办呢 想想肯定是环境 ...

  5. OAM

    OAM -- Operation Administration and Maintenance[ˈmentənəns]. 根据运营商网络运营的实际需要,通常将网络的管理工作划分为3大类:操作(Oper ...

  6. nodejs的第五天学习笔记

    一.调试nodejs代码 1)使用console.log() 使用麻烦,用了以后还要删除 2)nodejs的自带调试器 -node debug a.js 没有任何作用,一个玩具,将来有一天可以会变得强 ...

  7. maven-web项目中的一些小问题

    1.最新的jetty容器 org.eclipse.jetty 需要JDK1.8的支持. 2.在容器中发布WEB项目时web 中的pom.xml的依赖关系会丧失,依赖和插件需要单独完全编写(尽管IDE会 ...

  8. java, mybatis, 调用mysql存储过程

    Map<String, Object> bindinfo = new HashMap<String, Object>();            bindinfo.put(&q ...

  9. android native crash 分析

    工具: addr2line arm-linux-androideabi-addr2line -aCfe libart.so 0x63006d 当libart.so包含符号表的情况下,可以查询到他的地址 ...

  10. JSON数据源提供多值参数的实现

    一.应用场景 (1)报表的数据内容需要根据某个参数进行过滤. (2)该参数是一个多值参数,即从一个下拉列表中选择一个或多个项目. (3)报表需要自动运行,因此参数必须有默认值. (4)参数默认值无法在 ...