前言
对于信息与计算科学专业而言的同学们,我认为C++语言程序设计无疑是我们在计算机方面发展的启蒙课,其实我身边的小伙伴在接触伊始更多的是稀里糊涂,“啥玩意呀!听不懂”,这种状态可能要持续半本书或者更长时间,对此我认为,对着代码一遍遍的打就是真正开启编程之门的钥匙。近来,我在学习数据结构这门课程,于是就对C和C++重新进行梳理和回顾,同时分享给大家,我们互相交流,共同进步!
正文
C/C++区别:
1、面向过程与面向对象
众所周知,C语言是面向过程语言,而C++是面向对象语言,而我认为这就是他们最本质的区别,说C和C++的区别,我们就要了解面向过程和面向对象的区别。
面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
当然他们各有优缺点,但不能否认在某个方面都有其独特的作用。我们作为初学者在有能力的前提下,都应该尽可能充分的去了解二者。
2、具体语法上的区别和对比
(1) 数据的输入、输出
(2)动态内存分配
动态,指在程序的 运行期间为数据 “分配”、“释放”内存空间;
C语言的动态内存分配通过调用系统函数实现,这些函数包含在stdlib.h中。如:malloc() / calloc() 、realloc()、free()。
C++中使用new和delete 运算符进行内存动态管理。
(3)关键词不同:C语言有32个关键词而C++语言有63个关键词
一些关键字的细微区别:
.struct:在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。
.malloc :malloc函数的返回值为void*,在C语言中可以赋值给任意类型的指针,在C++中必须强制类型转换,否则报错。
.struct和class:class是对struct的扩展,struct默认的访问权限是public,而class默认的访问权限是private。
(4)后缀名不同:C源文件后缀.c,C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。
(5)C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。
(6)函数重载:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。(C语言没有函数重载,C++支持函数重载)。