C++和C语言的区别

        学了C++一段时间了,感觉C和C++的关系可以用“与时俱进”一词来形容。怎么说呢,我们知道C++是在C的基础上发展而来的,C++是C语言的高级产物。C++是C语言的创新和发展。
        初次接触C语言的时候,讲到C语言是一门面向过程的语言,是一个结构化语言。C语言程序设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。它的重点在于灵活运用算法和数据结构对过程的分析。
        而C++是一门面向对象的语言,它首先要考虑的就是如何构建一个对象,让这个对象能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
C与C++的不同:
  1. C++中,允许变量定义语句在程序中的任何地方,只要是在使用之前定义即可;在C语言中,只能在函数开头部分。
  2. C++是强类型的,注重类型匹配,会严格检查类型是否匹配;C语言是弱类型的。C语言检查到类型不明确,类型不匹配的情况,会默认进行自动转换。由于C++是强类型的编程语言,所以在C++编程时,一般不使用#define,而是使用const。
  3. C语言中若出现局部变量和全局变量命名重复,则全局变量被屏蔽,程序无法引用全局变量;但在C++语言中,可以使用域作用符::来引用全局变量。cout<<::a;即输出全局变量a的内容。
  4. C++中有了类这种结构,类似于C语言中的结构体,在C语言中结构只有成员变量,而没成员方法;C++中的类不仅可以定义数据,还可以定义函数,它可以有自己的成员变量和成员函数。
  5. 动态内存分配方式不同:new只能分配线性空间,不能直接分配二维数组空间
    1. C++:new分配,delete释放;
    2. C语言:malloc分配,free释放;
  6. 引用,在C++中引用用于在程序的不同部分使用两个以上的变量名指向同一地址,使对其中任一变量的操作实际上都是对同一地址单元进行的。引用类型名就是变量的别名;引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。引用一旦被初始化,就不能再重新赋值;C++语法不支持一个数组是个引用(C++不支持数组的每个元素都是引用)但引用一个数组是可以的。
  7. C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
  8. #define定义的常量有所不同,const定义的常量可以有自己的数据类型,这样C++编译程序可以进行更加严格的类型检查,具有良好的编译时的检测性。
  9. C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。
  10. C++中联合名、枚举名也可在定义后独立地作为类型名使用;
  11. C++中全局对象cin、cout来输入输出,比C更方便,而且类型检查机制更加完善;
  12. C++检测到右值在内存中有实体,自动转换为左值;

int a = 3;
(a = 3) = 4;//在C编译器中,会提示错误,‘=’左操作数必须为左值
            //在C++编译器中,就会编译通过。

          C语言不会把右值转换为左值:(a + 1)++;提示错误,++需要左值,a+1在内存中没有实体,所以C++中该句也不正确。

   13.  C语言全局变量有声明和定义的差别,静态全局变量也没有声明和定义的区别;

          C++全局变量没有声明和定义的差别;

           所以:

int a;
int a;

        上述2条语句在C语言中没有问题,因为,这将会当做声明;

        但在C++中,这都会被当做定义,故会出错。

static int b;
static int b;

        在C语言中是可以编译通过的,但在C++中依然会报错:变量重复定义

    14.  C++是强类型系统,返回值必须要有类型。

    15.  C++编译器对寄存器变量做了优化,检测到取寄存器变量的地址,就会把它转为非寄存器变量;

    16.  C语言寄存器变量,不可以取地址。

        C实现了C++中过程化控制及其它相关功能,C++相对于原来的C还有所加强,引入了重载、内联函数、异常处理等,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。还有,在C++中,除了数据封装、类型,还需要关注的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等。



    “一直认为成功是需要努力进取的!走捷径不是不会成功,只是会让你处于空虚幻的状态!”——科比--布莱恩特。学习C/C++也是一样,没有捷径可走,还是要一步一个脚印。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值