C与C++的区别

目录

从C语言到C++

代码改变

即将开始---STL


从C语言到C++

1980年,Bjarne Stroustrup博士着手创建一种新的语言,能够具有面向对象的程序设计特色。在当时,面向对象编程是一个新颖的概念,Stroustrup博士并不是从头开始设计新语言,而是使用C语言进行修改,而这就是C++语言。

C++是C的超集,也就是说C++是可以兼容C语言的,C++在C语言的基础上增加了许多的特性和概念,他通关关键字的方式进行实现,不过本文不重点说明C++和C语言的区别,本文只是从数据结构的角度去观测两语言之间的问题,并且说明C++的改进,从本文开始,将会在C语言的基础上开始用到C++的特性和概念去实现数据结构,这将方便我们的程序设计。

代码改变

介绍几个很明显的转变我们以后会很常用,这些可以在C语言网的C++教程中看到,如果你已经学过C++,建议你可以直接跳过本段内容,如果你对于C++还一知半解的,建议你在阅读本文的同时去翻阅C++的学习资料,两者的学习并不冲突,相反他们相辅相成。

1.头文件引用

C语言的引用头文件的方式是include名字.h的方式进行引用,而C++去掉了.h(虽然在绝大多数编译器上任然使用.h的方法也不会报错)而是改成直接引用名字即可,这里需要注意的是C++使用C语言标准时,需要在库前面添加一个c来表明这个库是来自于C语言的。

objectivec 复制代码
//C语言的方法:带.h的方式进行include
#include<stdio.h>
#include<math.h>
  
//C++的方法,直接引用即可
#include<cstdio>
#include<cmath>

2.输入与输出

C++的输入输出与C语言指定类型的不同,C++采用"流"的思路去进行输入输出设计,这样的做法可以大大简化我们的设计,但是这样的做法确是更慢,本章稍后会介绍输入输出的优化,将会重讲本内容。

objectivec 复制代码
int n; //定义n为整形
//C语言的输入输出(需要指定类型,如下指定为整形)
scanf("%d",&n);
printf("%d",n);
//C++语言的输入输出(不需要指定类型,会根据n进行自主的判定)
cin>>n;
cout<<n;

即将开始---STL

STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。从根本上说,STL是一些"容器"与"算法"的集合,所谓的这些"容器"无非就是已经实现好了数据结构,能够让程序设计者更为方便的进行调用,"算法"则顾名思义就是已预先实现好了的算法集合。

STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用安装额外的库文件。STL的版本很多,有很多公司或者工作室自定义STL形成各种各样的自定义标准。。

在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

使用STL可以大大辅助简化我们的算法与数据结构的设计,但是我们必须要记住,在我们使用之前,我们必须要了解他的原理,掌握它的技巧,否则就是乱用,切记。

相关推荐
codigger27 分钟前
ObjectSense:一门千行内核、把可靠性写进骨子里的面向对象脚本语言
开发语言·编程·编程语言
小小龙学IT1 小时前
Boost.Interprocess 开源 C++ 进程间通信库深度解析
c++·开源
晓蛋5 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特5 天前
算法竞赛C++常用的STL
c++·算法
weilx12345 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊5 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿5 天前
重载、重写(覆盖)、重定义区别
c语言
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
phltxy5 天前
C 语言指针:从内存地址到灵活的数据访问
c语言