C语言函数

一、函数

C语言程序是由函数构成的,每个函数负责完成一部分的功能,函数将工恩呢该封装起来,以供程序调用。

二、函数定义

目的:将一些常用的功能封装起来,以供日后调用。

步骤:确定函数名,确定函数体,调用

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

{  函数体 }

三、函数调用

定义函数需要明确定的东西:

①. 取一个有意义的函数名

②. 确定函数的形参

③. 编写函数体

④. 返回值

示例:

Int average(int num1,int num2)

{

Return  (num1+num2)/2;

}

int main()

{

Int a=1;

Int b=3;

Int c=average(a,b); //调用函数

Return 0;

}

四、参数

①. 形参:定义函数时,函数名后面的参数 如num1和num2

②. 实参:调用函数时,传人的具体数据   如a和b

③. 形参和实参的个数必须相等

④. 函数体内部不能定义和形参同名的变量

⑤. 如果是基本的数据类型作为形参,则是纯粹的值传递,修改函数内部形参的值并不会影响到实参的值

⑥. 一个函数可以没有形参,也可以有无限个形参

五、函数的返回值

(一)Return 的作用:

①. 退出函数

②. 返回一个具体的值给函数的调用者

(二)返回值使用注意:

①. C语言是弱语法弱类型的语言,非常不严格

②. 如果没有写清楚返回值的类型,则默认为int型的

③. Void代表没有返回值

④. 就算明确声明了返回值类型,也可以不返回任何的值

⑤. C语言默认情况下,不允许有两个同名的函数

六、函数使用注意

①. 默认不允许函数重名

②. 函数之间是平等的,不能够嵌套定义

③. 函数不可以重复定义,但是可以重复声明,只要是在调用前声明就可以,地方随便

④. 函数如果是只要声明没有定义,那么编译可以成功,但链接时会失效

七、多人协作

#include<.stdio.h>是一个系统头文件。

#include<abc.txt>相当于把abc.txt文件中的所用内容以纯文本的方式拷贝到当前位置。

“”表示文件与.c文件处于同一路径,可以使用相对路径也可以使用绝对路径。左边有/的是绝对路径,没有/则为相对路径。

注意:自定义的文件使用“”,系统文件使用<>。

函数如果在调用时,函数定义在调用之后,且前面没有进行相应的声明,则编译器报错;

调用函数,没有函数声明,编译器不会报错,链接时报错,不定义函数反而不报错。

链接:把项目中所以相关的.o目标文件和c语言的函数库合并在一起,生成可执行文件。

通常:

①. 函数的定义放在.c文件中,函数的声明放在.h文件中

②. 如果要是有某个.c文件中定义的函数,只需要包含.c文件对应的.h文件即可

③. .h文件生下来就是打酱油被别人拿来拷贝包含的,编译链接时不用写出

八、补充

(1)main函数的返回值是返回给操作系统的,0为正常退出,其他值为非正常退出。用以进行系统日志,其实它返回任何值对程序本身没有影响,仅仅只是标记

(2)Printf函数的返回值为字符数。如printf(“abc”);则返回值为3,若printf(“abc男\n”);的返回值为7,因为一个中文占3个字符。

最新文章

  1. Python全栈【Socket网络编程】
  2. js设置和读取cookie
  3. Maltego实体分类与Transform
  4. kailli添加桌面快捷方式
  5. linux内核模块
  6. classpath、path、JAVA_HOME的作用
  7. 给Windows机器创建软连接
  8. Poj 1255 覆盖的面积 2014-07-28 12:29 116人阅读 评论(0) 收藏
  9. 为apache与mysql创建快捷方式
  10. What is therelationship between @EJB and ejb-ref/ejb-local-ref?
  11. Delphi 的接口机制——接口操作的编译器实现过程(1)
  12. 【java基础】==与equals()方法比较
  13. netcore实践:跨平台动态加载native组件
  14. oracle-sql入门练习及答案
  15. JS封装运动框架(另一种写法)
  16. C++函数重载和函数模板(04)
  17. 逆向实用干货分享,Hook技术第二讲,之虚表HOOK
  18. 让你用sublime写出最完美的python代码--windows环境
  19. 某控股公司OA系统ORACLE DG搭建
  20. vue实现双向数据绑定的原理

热门文章

  1. spring事物传播属性
  2. ExecutorService 和 NSOperationQueue
  3. (转)SQL SERVER的锁机制(一)——概述(锁的种类与范围)
  4. Java for LeetCode 160 Intersection of Two Linked Lists
  5. Greedy:Protecting the Flowers(POJ 3262)
  6. codeforces B. New Year Present 解题报告
  7. HDU 5745 La Vie en rose (DP||模拟) 2016杭电多校联合第二场
  8. java 基本数据类型
  9. 二、JavaScript语言--JS基础--JavaScript进阶篇--JS基础语法
  10. Ubuntu 下搭建SVN服务器