1、C++不允许出现多个同名的全局变量
2、C中const修饰的变量可以通过指针修改

3、C语言:NULL,C++中:nullptr
C语言中NULL通常是0值,只报警告
C++中nullptr的左值一定得是指针类型
4、C++新增“引用”
引用:取别名
数据类型+&+变量名
例:给a取别名为b,a与b表示同一片内存空间。
int a = 5;
int &b = a;
用途:函数的传参、函数的返回值
函数的传参:形参(引用)可以改变实参的值
优点:不需要新开辟空间,使用指针需要新开辟空间存储指针变量。
函数的返回值:int &a = b;
5、C++新增函数重载
函数名相同,函数参数的个数不一样/函数参数的类型不一样。
6、C++新增默认参数
默认参数从右往左设置,函数传参从左往右传。
默认参数与函数重载可能存在歧义
7、输入输出不同
<iostream>头文件
C++:输入cin输出cout
<stdio.h>头文件
C:输入scanf输出printf
8、强制类型转换
C:(类型名)表达式;
(int)a;
C++:表达式(类型名);
a(int);
9、C++新增内联函数
inline 存储类型 数据类型 函数名(形参列表)
优化,提供效率,在编译时将调用函数的代码直接嵌入到主调函数中,这种嵌入到主调函数中的函数称为内置函数(内嵌函数/内联函数)。
内联函数的声明和定义都在头文件中。
内联函数使用一般为5个语句以下,不能包括复杂语句,如循环和switch语句。
10、结构体不同
面向对象:属性、行为
如小明 属性:身高、体重 行为:动作(函数)
C语言是面向过程的编程;C++是面向对象的编程。
C语言也可以有面向对象的思维编程,只不过比较麻烦,依靠结构体实现。C语言结构体不能存函数,可以存函数指针。
C++结构体中可以直接存放函数
C++中结构体新增了被访问权限的概念,关键字为public(公有)、protected(受保护的)、private(私有的),并且拥有this指针
C++中结构体使用较少,结构体升级后为class(类),class拥有结构体所有功能。
11、作用域
C:局部域、全局域
C++:局部域、全局域、类域、名字(称)空间域
名字空间域:防止多人开发时使用相同名字的函数、变量,所以使用不同的名字空间以区分。
类域
12、堆区开辟空间
C:malloc free(函数)
C++:new delete (关键字)