首页编程语言C语言函数编程大题

C语言函数编程大题

cysgjjcysgjj时间2024-09-07 15:57:11分类编程语言浏览44
导读:编写C语言程序经常要用很多函数,怎样定义自己的函数?为什么要定义函数,不麻烦吗?C语言是函数式编程语言吗?编写C语言程序经常要用很多函数,怎样定义自己的函数?为什么要定义函数,不麻烦吗?在C语言程序开发中,我们常常使用一些库函数(例如 printf,sin 等函数)。事实上,实际需求通常是非常复杂的,只依靠现有的函数很难完成。这就需要……...
  1. 编写C语言程序经常要用很多函数,怎样定义自己的函数?为什么要定义函数,不麻烦吗?
  2. C语言是函数式编程语言吗?

编写C语言程序经常要用很多函数,怎样定义自己的函数?为什么要定义函数,不麻烦吗?

在C语言程序开发中,我们常常使用一些库函数(例如 printf,sin 等函数)。事实上,实际需求通常是非常复杂的,只依靠现有的函数很难完成。这就需要自己定义 C语言函数。

可以一个函数看作是一块积木,各种各样的积木才能堆积成复杂的建筑。只有几种积木,能完成的建筑太有限了,如果能够自己造各种各样的积木,再复杂的建筑也能完成。

在我之前的文章里介绍过,C语言作为编程语言,是一种形式语言,具有固定的格式结构符号

C语言函数编程大题
图片来源网络,侵删)

注意函数名在相应可见域内要保持唯一性,例如,在 main 函数所在文件里定义的函数名不能也为 main。再啰嗦一下 main 函数,主要是因为它是默认的入口函数,比较特殊。

在了解了自定义函数的一些限制后,很容易就可以写出如下代码。下面的代码中,我们定义了 printA 函数,它的参数为空,也没有返回值,仅仅是打印出一个字母 “A”。

一共是两个问题,我来简单说一下。

C语言函数编程大题
(图片来源网络,侵删)

设计:确定函数的功能、参数、返回值

实现:函数原型、函数的实现

举个例子,Fibonacci函数:

C语言函数编程大题
(图片来源网络,侵删)

F(1)=1, F(0)=1,F(N)=F(N-1)+F(N-2)

功能:计算Fibonacci函数值

参数:无符号整数N

返回值:无符号整数F(N)

代码如下:

C语言是函数式编程语言吗?

首先,我们先看一下百度百科上是如何定义函数式编程的:

函数式编程是种编程范式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。

从上文中我们可以看出,所谓的函数式编程,和面向过程编程、面向对象编程一样,是一种编程的方法、编程的思想

所以问题的描述并不准确,确切的说,C 语言可以使用函数式编程的方法进行编程。

首先给出结论,是。为什么?

我们不妨先来从面向对象切入。

当我们将面向对象看作是语言的属性时,c语言是面向对象语言吗?众所周知,c++java高级语言都是面向对象语言,而通常我们说c语言是面向过程的。这是因为c++与j***a对面向对象提供了很好的优化通过类,成员变量与方法,继承与多态,虚函数与重载等特性,我们就可以很详细的抽象对象的模型但是c语言中只有结构体,结构体内部不能定义函数,只能有成员变量,于是我们在用c语言抽象对象模型时遇到了很多困难,所以通常我们说c语言是面向过程的。

但是面向对象的提出是为了编程思想更好的演进,而不是作为划分语言属性。换句话讲,面向对象的编程思想是与语言无关的。使用c语言的结构体,结合函数指针,我们也可以在c语言中实现c++中类的各项功能,只不过我们做了很多在其他高级语言中编译器要做的事情,这对开发者而言很不友好,而且维护成本很高。

这里我要说的是,如果你问我c语言是面向对象语言吗?我一样会回答是。因为面向对象是思想,不是划分语言的属性。

最后,我们回到问题上,函数式意味着我们可以将代码打包封装,预留出接口,一个函数可以从接口调用其它函数的返回值,并将自身的返回值作为接口供其他函数调用。这同样是一种设计思想,通过这样的方式,我们很容易的可以将工程模块化,实现模块间的解耦。

无论是语言本身对于函数式编程的支持与优化上还是从编程思想的实现上,c语言显然都是符合这一特点的。

C是你说的面向对象或者面向函数的高等语言的实现语言。你可以用C进行任何范式的代码类型开发。唯一的区别是,那些语言已经帮你制定了规范,而C语言需要你自己制定规范,比如制定一个定义特定类型函数指针的宏,然后所有具有callback特性的参数都必须用这个宏定义。C还能做的更多,可以实现各种范式的混合开发。当然,学习C语言需要10年以上才能灵活使用它。但高等面向函数式语言只要一周就可以学习完毕,一个月就能实战了。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/18847.html

函数语言编程
互联网技术岗讲座心得体会 矩阵运算c语言编程,矩阵运算c语言代码