c语言是面向什么的语言?
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
是的,C语言是面向过程的语言。面向过程程序设计意味着您需要分析问题,并将这个问题分解为不同的步骤或子问题,然后编写函数来依次解决这些步骤和子问题,最后串接起来就解决整个问题。
而面向对象则意味着需要把问题抽象为类和对象,并通过封装、继承和多态等手段解决问题。
c语言是面向过程的语言?
是的,C语言是面向过程的语言。面向过程程序设计意味着您需要分析问题,并将这个问题分解为不同的步骤或子问题,然后编写函数来依次解决这些步骤和子问题,最后串接起来就解决整个问题。
而面向对象则意味着需要把问题抽象为类和对象,并通过封装、继承和多态等手段解决问题。
面向过程语言有哪几种?
C浯言是最常见的面向过程语言。C语言是一种通用语言,可以用于编写解决各种类型问题的程序,如有关电子商务的程序、有关过程控制的程序、游戏程序等
Fortran语言是另外一种常见的面向过程的语言,主要用于编写与数值计算有关的程序,广泛应用于科学和工程计算领域。
老师说C语言是面向过程的编程语言,它能使用面向对象编程吗?如何使用?
C是面向过程的,在语言这一层面上并没有支持类和对象的概念,C++才支持的。但是,面向对象,本质上是一种编程和设计的思想。即使用纯C,仍然不妨碍人应用面向对象的编程思想。倘若研究过Linux的源代码就应该有点印象,它是纯C写的,但是里面很多函数指针,本质上是模块之间互相松耦合,体现的就是面向对象的设计思想。
谢谢邀请。
其实,“面向过程”和“面向对象”只是程序开发中的一种方法,或者说一种思想,大多数现代高级编程语言都能使用这两种编程思想,C语言当然也不例外。
只不过,有些编程语言在语法上支持“对象”,而C语言则没有原生的“对象”语法。不过借助于灵活的指针和结构体语法,在C语言程序开发中使用“面向对象”思想也是很简单的。
malloc() 和 free() 函数
鉴于题主可能是C语言初学者,在开始讨论如何使用C语言进行“面向对象”开发之前,先介绍两个新函数——malloc() 和 free() 。
如果题主看过我之前文章的话,应该明白C语言程序每调用一次函数,系统就会在栈中分配一块栈帧给被调用函数,当函数执行完毕后,这部分栈帧就自动被系统收回了。
malloc() 函数的作用是申请一块指定大小的内存,它的C语言原型如下,成功时返回这块内存的首地址,失败时返回 NULL。
C语言程序中函数的局部变量占用的内存,是函数运行时,自动在其所属栈帧中分配的,所以局部变量会随着函数结束释放。不过,malloc() 向系统申请的内存在堆区里,这部分内存不会随着函数的退出自动释放,需要程序员自己使用 free() 函数释放:
以上这几行C语言代码的意思是向系统申请 5 字节的内存,如果申请成功,就把它释放。
如果在C语言程序退出之前,只 malloc() 而不 free(),程序占用的内存会越来越多,直到最后崩溃退出。这种情况,程序员习惯称为“内存泄漏”。
使用C语言进行“面向对象”编程
相当一部分程序员看不起C语言是因为他们觉得C语言没有“对象”。现在,我们尝试给C语言找一个“对象”。请看:
因为C语言不支持原生的“类”语法,所以我们使用结构体模拟了一个 class,定义了一个“FATHER 类”,它有成员函数 hello()。
上述C语言代码又定义了一个“SON 类”,它有成员函数 hello(),也有成员变量 count(),还有一个“父类”father。接下来,定义“FATHER类”和“SON类”的 hello 函数,相关C语言代码如下:
如何让这两个函数与我们定义的“类”产生联系呢?我们定义“构造函数”:
上述C语言代码首先使用 malloc() 为 son 在堆中申请一块内存,这保证了 son 在程序结束之前都不会被释放。同样的,为 father 也申请了一块内存。
接着,把它们各自的函数传递给结构体里面定义的函数指针,这样便定义好了“类”son。有了构造函数,再来定义“析构函数”,相关C语言代码如下:
析构函数的主要作用就是释放 malloc() 的内存,防止内存泄漏。至此,我们就使用C语言实现了“类”的封装,测试一下:
上述C语言代码是典型的“面向对象”风格:程序使用 SON 类实例化了一个 son 对象,son 调用了自己的成员函数,也调用了从“父类”继承而来的函数。编译并执行这段C语言代码,发现输出与预期一致。
应该注意的是,从表达式 son->hello(son) 可以看出,C语言没有类的支持,所以需要显式的把 son 指针传给 hello。但是,“father类”和“son类”里都可以使用 hello 做函数名,这说明C语言的“类”也对封装有很好的效果。
欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。