初识c++(c++与c语言的区别)

本文对比了C语言和C++语言的主要区别,包括面向过程与面向对象编程的不同、命名空间的引入、变量定义的灵活性、register关键字的作用变化、变量监测加强、struct类型的改进、函数参数类型的要求变化、布尔类型bool的引入以及三目运算符的功能增强。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言是面向面向过程的程序设计:数据结构+算法,c语言的目的是高效。

c++是面向对象的程序设计:由现实世界建立软件模型。

c++比c加强的点:

1.引入命名空间

一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。为了解决合作开发时的命名冲突问题,C++ 引入了命名空间(Namespace)的概念。
命名空间将全局作用域分成不同的部分
不同命名空间中的标识符可以同名而不会发生冲突
命名空间可以相互嵌套
全局作用域也叫默认命名空间

2.实用性加强

C语言中的变量都必须在作用域开始的位置定义!

C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。

例如: for (int i = 0; i < 10; i++)

3.register关键字

register关键字请求“编译器”将局部变量存储于寄存器中

C语言中无法取得register变量地址

在C++中依然支持register关键字

C++编译器有自己的优化方式,不使用register也可能做优化

C++中可以取得register变量的地址

C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。

4.变量监测加强

在C语言中重复定义多个全局变量是合法的
这些同名的全局变量最终都会被链接全局数据区的同一个地址空间上

在C语言中只有一个全局作用域
C语言中所有的全局标识符共享同一个作用域
标识符之间可能发生冲突  

在C++中不允许定义多个同名的全局变量

5.struct类型加强

C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型
C++中的struct是一个新类型的定义声明

C语言中 struct 定义了一组数据的集合,而不是一种新的数据类型
所以在定义变量的时候需要在前面加上 struct 关键字进行修饰
C++中 struct 定义了一种新的数据类型,可以直接用来定义变量

6.c++中所有变量和函数都必须要有数据类型

c语言:

//1 函数可以没有返回参数类型
f()
{
    printf ("hello world\n");
}
 
//2 函数参数可以没有数据类型
g(i)
{
    return i;
}
 
int main()
{
// 3 没有参数的函数可以接收任意个参数
    f(1,2,3,4,5);
 
    g(12,15);
 
    return 0;
}

c++加强:

在C语言中
      int f(    );表示返回值为int,接受任意参数的函数
      int f(void);表示返回值为int的无参函数
 
在C++中
      int f(  );和int f(void)具有相同的意义,都表示返回值为int的无参函数
 
C++更加强调类型,任意的程序元素都必须显示指明类型

7.新增bool类型关键字

C++中的布尔类型
      C++在C语言的基本类型系统之上增加了bool
      C++中的bool可取的值只有true和false
      理论上bool只占用一个字节,
      如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现
 
      true代表真值,编译器内部用1来表示
      false代表非真值,编译器内部用0来表示
 
      bool类型只有true(非0)和false(0)两个值
      C++编译器会在赋值时将非0值转换为true,0值转换为false

8.三目运算符的加强

1)C语言返回变量的值 C++语言是返回变量本身
    C语言中的三目运算符返回的是变量值,不能作为左值使用
    C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方
 
2)注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用
    (a < b ? 1 : b )= 30;
 
3)C语言如何支持类似C++的特性呢?
====>当左值的条件:要有内存空间;C++编译器帮助程序员取了一个地址而已





 




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值