C 和 C++的比较

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)即C是面向过程的。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制即C++是面向对象的。
所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

具体比较:
(1) C++与C语言相比有何特点
全面兼容C语言(C是C++的子集);支持面向对象编程;C++的可重用性、可扩充性以及可维护性较好。
(2) C++与C语言程序结构有何不同
C语言的程序结构主要包括预处理程序、自定义类型说明、常量定义、函数定义以及主函数定义几大部分;
C语言的程序结构在C++中也是适用的,此外C++还有类的定义和使用两个主要组成部分。
(3) C++与C语言如何处理输入输出
C语言中使用scanf()函数实现格式化输入,使用printf()函数实现格式化输出。如果输入和输出函数中格式化类型与实际类型不符时,C编译器无法检查出错误,但是程序运行时会出现问题。
C++采用了流的形式来控制输入和输出操作,cin为标准输入流,cout为标准输出流;即使输入输出语句中定义了不同类型的数据,在编译和执行过程中将不会出现任何错误信息。
(4) C++与C语言中局部变量的声明方式有何不同
C语言中,全局变量必须声明在所有函数之前,局部变量必须声明在所有可执行语句之前;
C++中允许在代码模块中的任意位置对局部变量进行声明。
(5) C语言允许函数重载么?C++对于函数重载有什么要求?
(在同一个作用域中,如果有多个函数的名字相同,但是形参列表不同(个数不同、类型不同、参数排列顺序不同等),返回值类型可同也可不同,我们称之为重载函数。 重载的函数是通过形参列表区分的,与返回值类型无关。)
C语言中不存在函数重载的概念,不允许出现名称相同的函数; 
C++允许重载函数,即对于函数参数类型不同、参数个数不同或者参数类型和个数都不同的情况。
(6) 处理动态存储分配问题时C++和C语言有何不同?
C语言中使用malloc()函数分配动态内存空间,使用free()函数释放动态内存空间;由于malloc函数返回的是void型指针,因而需要强制转换类型。
C++新添加了new和delete操作符,new可以自动计算所要分配的内存大小,并返回正确的指针类型;new 可以自动调用构造函数。(堆区分配内存,必须手动释放)
(7) 函数的默认参数
C语言不支持函数默认参数;
C++定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。即调用函数时可以省略有默认值的参数。如果用户指定了参数的值,那么就使用用户指定的值,否则使用参数的默认值。
(默认参数除了使用数值常量指定,也可以使用表达式指定,并且C++规定,默认参数只能放在形参列表的最后,而且一旦为某个形参指定了默认值,那么它后面的所有形参都必须有默认值。因为实参和形参的传值是从左到右依次匹配的,默认参数的连续性是保证正确传参的前提)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值