C语言与C++的区别

简介: C语言与C++的区别

前言


对比学习往往会使学习的效率事半功倍。本次进行一下c与c++的对比。可以说c++是c语言的加强扩充版;c++对c语言的一些语法进行了优化;两者在开发之初就有些不同,C语言面向过程,就是你要实现什么就写什么,代码的耦合度很强,C++是一门面向对象的语言,经过代码之间的依赖性没有了那么强,接下来主要从语法上说一下两者的异同。


语法加强部分


一.struct关键字加强;


在c语言中用struct 定义结构体名并不能直接拿结构体名去声明结构体变量
如果想用结构体名直接声明结构体变量就在struct前加上typedef重命名关键字;
在c++中struct得到了加强;
可以定义完结构体类型直接拿结构体名去声明结构体变量;


二.声明变量得到加强


在c语言中只能在区域开始的时候声明变量,并且把变量直接声明完否则不被允许;
c++中随处可以声明变量,可以将变量与函数执行语句时绑定在一起,使程序更有模块化;


三.检测性加强


1.申请寄存器变量并取地址问题


register可以申请将使用频繁的变量放在寄存器中;
寄存器中的变量不可以取地址,内存里面变量可以取地址
寄存器变量申请了不一定会成功,c++优化后编译器一般会判断,怎么合适怎么来
如果是c语言申请将这个变量寄存在寄存器中再取地址就会报错;
c++优化了这一点,如果你对申请的变量取地址他会直接将该变量直接放在内存中
因此取地址也没事;


2.重复定义变量问题


在c语言中可以定义一个变量定义很多次;如果没有值去覆盖
定义地址上的值那么定义的值一直存在;
c++可以及时检测到你定义过这个变量,因此不可以重复定义一个变量;


3.函数传参问题


c语言中如果函数参数列表没有放参数那麽可以将任意类型的参数传进去;
c++优化了这一点;如果没有传参就是空类型;


四.三目运算符的优化


c语言中三目运算符运算之后返回的是一个数值,不可以做为赋值符号的左值:
c++为了提高运算的灵活性将三目运算符优化返回值是成为一个变量,可以作为赋值符号的左值;


五.const常量的声明


c语言中const int a=3仅仅是将a=3放入了常量区如果对其取
地址用指针去修改他的值可以改掉;并且c语言会对这个const 常量分配内存;
c++中优化了以上缺点,将a=3直接放入符号表中,将a与3绑定;
如果再用指针修改a的值并不影响他们的绑定关系;
一搬c++中不会对const常量分配内存,只是对其进行绑定;【放入符号表】
有以下两种情况会分配
(1).const 的常量是全局变量
(2).const int &a=10;(常引用);


主要有以下扩充


引入了命名空间;


如果有多个同名的变量可以用using namespace A{a=10}   using namespa B{a=22}限定
在使用时用using namespace A或另一个限定一下;
然后就可以直接对命名空间的变量使用;std是标准命名空间,所以使用时要声明一下;


引入了输入输出流cin、cout;


引入了布尔类型、字符串类型【string】


布尔类型占一个字节,并且返回值类型非0即1:如果不是零返回其他任何值都是1;
char str[10] 属于字符数组。


引入了函数重载;


引入了类与对象;


引入了引用这一概念


在运用引用时不要考虑怎末引用的,知道是对原来的变量起别名就好:


总结


这里是博主在刚刚步入大一的时候学习c++记录的学习笔记,说到的非常浅,C++与C都是超级优秀的编程语言,他们的异同也不仅仅只有这些,还有好的想法请评论区告诉博主。(^_−)☆


相关文章
|
6月前
|
安全 C语言 C++
比较C++的内存分配与管理方式new/delete与C语言中的malloc/realloc/calloc/free。
在实用性方面,C++的内存管理方式提供了面向对象的特性,它是处理构造和析构、需要类型安全和异常处理的首选方案。而C语言的内存管理函数适用于简单的内存分配,例如分配原始内存块或复杂性较低的数据结构,没有构造和析构的要求。当从C迁移到C++,或在C++中使用C代码时,了解两种内存管理方式的差异非常重要。
232 26
|
7月前
|
算法 Java 数据库连接
Java 与 C++ 区别深入剖析及应用实例详解
本文深入剖析了Java和C++两种编程语言的区别,从编译与执行机制、面向对象特性、数据类型与变量、内存管理、异常处理等方面进行对比,并结合游戏开发、企业级应用开发、操作系统与嵌入式开发等实际场景分析其特点。Java以跨平台性强、自动内存管理著称,适合企业级应用;C++则因高性能和对硬件的直接访问能力,在游戏引擎和嵌入式系统中占据优势。开发者可根据项目需求选择合适语言,提升开发效率与软件质量。附面试资料链接:[点此获取](https://pan.quark.cn/s/4459235fee85)。
671 0
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
存储 C语言
C语言中a 和&a 有什么区别
在C语言中,"a" 是一个变量的名字,代表存储在内存中的某个值。而"&a" 则是获取该变量的内存地址,即变量a在计算机内存中的具体位置。这两者的主要区别在于:"a" 操作的是变量中的值,"&a" 操作的是变量的内存地址。
2091 23
|
程序员 编译器 C语言
C中的 malloc 和C++中的 new 有什么区别
在C语言中,`malloc`函数用于在运行时分配内存,返回指向所分配内存的指针,需显式包含头文件 `<stdlib.h>`。而在C++中,`new`不仅分配内存,还对其进行构造初始化,且直接使用类型声明即可,无需额外包含头文件。`new`还支持数组初始化,能更好地融入C++的面向对象特性,而`malloc`仅作为内存分配工具。使用完毕后,`free`和`delete`分别用于释放`malloc`和`new`分配的内存。
442 21
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
176 2
|
存储 C语言
C语言:普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别
C语言中,普通局部变量在函数内部定义,作用域仅限于该函数;普通全局变量在所有函数外部定义,作用域为整个文件;静态局部变量在函数内部定义但生命周期为整个程序运行期;静态全局变量在所有函数外部定义,但仅在定义它的文件内可见。
1001 10
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。