EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 行者~ABC 于 2019-11-20 14:41 编辑 ; [# k% v( l3 }* k
- ?. Y' G! v- E3 G
函数概念 面向过程对象模块的基本单位,以及对应各种组合,函数指针,指针函数
0 m9 I* H$ q- h, Z一个函数就是一个业务逻辑块,是面向过程,单元模块的最小单元,而且在函数的执行过程中,形参,实参如何交换数据,如何将数据传递出去,如何设计一个合理的函数,不单单是解决一个功能,还要看是不是能够复用,避免重复造轮子。 $ T3 `& [+ r/ P6 {: U
函数指针和指针函数,表面是两个字面意思的互换实际上含义截然不同,指针函数比较好理解,就是返回指针的一个函数,函数指针这个主要用在回调函数,很多人觉得函数都没还搞明白,回调函数更晕菜了。其实可以通俗的理解指向函数的指针,本身是一个指针变量,只不过在初始化的时候指向了函数,这又回到了指针层面。没搞明白指针再次深入的向前走特别难。 / q: {1 O. K: e* t( v) |
; K2 G2 Q2 A# _% ]0 q" b
/ I: d2 _5 K- {8 |: S$ NC语言的开发者们为后来的开发者做了一些省力气的事情,他们编写了大量代码,将常见的基本功能都完成了,可以让别人直接拿来使用。但是那么多代码,如何从中找到自己需要的呢?将所有代码都拿来显然是不太现实。
( Q- T5 K$ V [' u5 P3 M, Y
2 L! Z: W6 A# w3 u但是这些代码,早已被早期的开发者们分门别类地放在了不同的文件中,并且每一段代码都有唯一的名字。所以其实学习C语言并没有那么难,尤其是可以在动手锻炼做项目中进行。使用代码时,只要在对应的名字后面加上( )就可以。这样的一段代码就是函数,函数能够独立地完成某个功能,一次编写完成后可以多次使用。; Y/ z9 a: G+ U% G" z( n2 Q
: f! O' f7 X1 A9 y$ v很多初学者可能都会把C语言中的函数和数学中的函数概念搞混淆。其实真相并没有那么复杂,C语言中的函数是有规律可循迹的,只要搞清楚了概念你会发现还挺有意思的。1 J% p6 {* R! {+ I0 u
函数的英文名称是 Function,对应翻译过来的中文还有“功能”的意思。C语言中的函数也跟功能有着密切的关系。
, C9 j0 V$ e: \% T2 k* N6 |
: T1 O4 T$ T# h: g9 T ?2 K$ n' m; X* C我们来看一小段C语言代码:' Y# f* K4 f6 A. u. X
- 5 [6 \4 i6 Y5 x2 g" }, l+ f' i/ g
#include<stdio.h>int main(){puts("Hello World");return 0;}
" T) m1 J9 H1 t9 ^$ T把目光放在第4行代码上,这行代码会在显示器上输出“Hello World”。前面我们已经讲过,puts 后面要带( ),字符串也要放在( )中。
+ u: n& R2 L: z" v- z
{$ O+ o) {$ l在C语言中,有的语句使用时不能带括号,有的语句必须带括号。带括号的就是函数(Function)。- k2 M' T' K; `6 k
- p9 t5 D- n# y7 K
C语言提供了很多功能,我们只需要一句简单的代码就能够使用。但是这些功能的底层都比较复杂,通常是软件和硬件的结合,还要要考虑很多细节和边界,如果将这些功能都交给程序员去完成,那将极大增加程序员的学习成本,降低编程效率。
) @& [/ j" B# F+ Z% ~' a
4 [5 t: v7 Q' c7 v7 q有了函数之后,C语言的编程效率就好像有了神器一样,开发者们只需要随时调用就可以了,像进程函数、操作函数、时间日期函数等都可以帮助我们直接实现C语言本身的功能。7 j4 g/ ~1 Q, f( L) a* c
4 X8 J5 u5 q5 I$ T/ Z! LC语言函数是可以重复使用的。3 J5 T4 l: H& t8 ~" K
1 p, X6 x' I1 }% |6 k2 A函数的一个明显特征就是使用时必须带括号( ),必要的话,括号中还可以包含待处理的数据。例如puts("尚观科技")就使用了一段具有输出功能的代码,这段代码的名字是 puts,"尚观科技" 是要交给这段代码处理的数据。使用函数在编程中有专业的称呼,叫做函数调用(Function Call)。; n4 s% u8 O9 i$ i" e& i
' u! W8 g/ h8 Y2 z8 B& `如果函数需要处理多个数据,那么它们之间使用逗号,分隔,例如:" a. x' G6 P6 k
pow(10, 2);9 J, J+ s2 r9 t8 Z
该函数用来求10的2次方。
- h& O4 n L7 _( B+ r
' K* C' D3 r; o) Z- G5 e6 A好了,看到这里你有没有觉得其实C语言函数还是比较有意思的,而且并没有那么复杂困难。以后再遇到菜鸟小白的时候,你一口一个C语言的函数,说不定就能当场引来无数膜拜的目光。0 H% }& t- K) M( _9 f. R
|