4

这样看C函数才对 - Spark++

 1 year ago
source link: https://www.cnblogs.com/cheng-liu/p/17532759.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

这样看C函数才对

什么是函数?从定义来看,函数就是一段可以重复使用的代码块,比如下面这样
void hanshu(){ int a = 0; int b = 3;}
这时候就应该有人要跳出来了,这是什么**!确实,作为一个强烈反对屎山代码存在的编程者来说,一个好的函数应该是一个有着合理命名,并且功能紧凑的功能块,而不仅只是一份可以重复调用执行的代码。像下面这个一眼能看出其功能和实现逻辑才算是一个好函数。
int add(int num0, int num1){ return (num0 + num1);}
有了以上的认识还不够,我们应该更加剖根究底的看一下。总的来说,计算机是一个可以输入输出的系统,每个具体的项目产品也是,函数作为这座大山的基本组成单位,自然也是个系统。函数既然是一个系统,则就应该有一个系统视角的认识和理解。
传统意义来讲,一个函数的输入,就是它的形参,一个函数的输出就是它的返回值,对上面Add()函数来说,num0num1就是输入,return (num0 + num1)则是输出。
因为语言功能的限制,使得用以上规则写出的函数有些死板,不能灵活应对多变的编程需求,比如返回值无法直接返回一个数组,想要通过返回值返回一个数组往往需要有堆区空间的配合。

换个视角看函数输入输出


虽然用传统的方法来使用函数更符合每个人的编程习惯,不过有时候我们需要打破这种规范。函数作为一个有输入输出的系统,我们也可以用形参或者全局变量当作为函数的输出。
// 用形参作为函数输出void add(int num0, int num1, int &ret){ *ret = num0 + num1;} // 用全局变量作为函数输出int ret;void add(int num0, int num1){ ret =  (num0 + num1);}
同理,对于函数的输入,也不必拘泥于形参的输入,全局变量也应该算入。
虽然以上的方式写出的函数看起来有些别扭,但是在一些情景中却是很管用的,尤其是将形参作为函数输出的方式在 Linux 的系统调用中常常能看见其影子。对于函数的灵活使用能让我们应对各种灵活的场景,也能进一步提高对于语言的理解。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK