更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C语言与C++的基本区别和优缺点分析

  • 发布:C++培训
  • 来源:学习笔记
  • 时间:2017-04-07 16:16

C语言的优点:
1、出色的移植行2、访问硬件3、运行效率高
注:所有的操作系统的内核都是用C语言实现的
C语言的缺点:
1、扩展性差2、复用性差3、维护性差
面向对象:C++的优点:
1、扩展性好2、复用性好3、维护性好
C语言+面向对象方法论:1、objectivec2、c++
C++支持的编程规范:过程式、数据抽象、基于对象、面向对象式、函数式、泛型形式、模板元形式、值语义与对象语义
值语义可以拷贝与赋值,对象语义不可以进行拷贝和赋值
声明定义:
C++中强调语言的“实用性”,所有的变量都可以在需要的使用时再定义;
C语言中的都必须再作用域开始的位置定义;
Register
被register修饰的变量叫做寄存器变量
使用寄存器变量的注意点:
待声明的寄存器变量类型是CPU寄存器所能接受的类型,意味着寄存器变量是单个变量,变量长度应该小于寄存器长度。
不能对寄存器变量使用取地址符&,因为该变量是没有内存地址的;
尽量在大量频繁操作的时候使用寄存器变量,并且声明的寄存器变量个数尽可能的少。
Register关键字请求“编译器”将局部变量存储于寄存器中
C语言中是无法取得register变量的地址;
C++依然支持register关键字
C++编译器有自己的优化方式,不使用register也可能做优化;
C++中可以取得register变量的地址;
C++编辑器发现程序中需要取register变量的地址时,register对变量的声明变得无效;
Const
C++编辑器对const常量的处理
当碰见常量声明时在符号表中放入常量;
编译过程中若发现使用常量则直接以符号表中的值替换;
编译过程中若发现对const使用了extern或者&操作符时,则给对应的常量分配存储空间
注意:C++编译器虽然可能为const常量分配空间,但是不会使用其存储空间中的值;
动态内存分配
C++中的动态内存分配
C++中通过new关键字来进行动态内存申请
C++中的动态内存申请是基于类型进行的
Delete关键字是用于内存释放的
变量申请:数组申请:
Type*pointer=newType;Type*pointer=newType[N];
//…….//…….
Deletepointer;delete[]pointer;
New关键字与malloc函数的区别
New关键字是C++的一部分;malloc是由C库提供的函数
New以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配
New在申请单个类型变量时可进行初始化,malloc不具备内存初始化功能
引用是给一个变量起别名
定义引用的一般格式
类型&引用名=变量名;
例如:inta=1;
int&b=a;//b是a的别名,因此a和b是同一单元;
注:定义引用时一定要初始化,指明该引用变量是谁的别名;
函数传参:按引用传递
引用传递方式是在函数定义时在形参前面加上引用取地址符&;
例如:voidswap(int&a,int&b);
按值传递方式容易理解,但形参值的改变不能改变实参的值
地址传递的方式通过形参的改变使相应的实参改变,但程序容易产生错误,而且难以阅读;
引用作为参数对形参的任何操作都可以改变实参的相应数据,又使函数调用显得方便,自然。
引用作为返回值
引用的另一个作用就是用于返回引用的函数;
函数返回引用的一个主要目的就是可以将函数放在赋值运算符左边;
注:不能返回对局部变量的引用
引用访问一个变量是直接访问,指针访问一个变量是间接访问;
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间;
引用一经初始化,就不能再引用其他变量,而指针可以
注:尽可能的使用引用,不得已时使用指针。
内联函数
Inlineintmax(inta,intb)
{
Returna>b?a:b;
}
#definemax(a,b)(a)>(b)?(a):(b)
内联函数调用时,要求实参和形参的类型一致,另外内联函数会对实参的表达式进行求值,然后传递给形参;而宏替换只是用实参简单的进行替换形参;
内联函数是在函数编译的时候,在调用的地方将代码展开,而宏则是在预处理时进行替换;
在C++中建议使用内联函数来替换带参数的宏
函数重载的条件
函数重载的不同形式:
形参数量不同
形参类型不同
形参顺序不同
形参数量和形参类型的不同
调用重载函数时,编译器通过检查实际参数的个数、类型和顺序来确定相应的被调用函数
*extern“C”实现C和C++混合编程
#ifdef_cplusplus
extern“c”
{
#endif
…………
#ifdef_cplusplus
}
#endif

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇: C++程序员是否该掌握某种汇编语言?
下一篇:每一个C#开发者必须知道的12件事情

C语言创建windows窗口实例

C++回调函数是什么?

C++ shared_ptr和动态数组

C语言有哪些关键词,C语言44个关键词大全

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省