1、const增强
C语言中const修饰的变量为常变量,但是可以通过指针间接来修改。但是在c++中不可以通过指针来间接修改,在c++中const修饰的常变量与c中const修饰的常变量存储的位置不一样。
#include<stdio.h>
int main()
{
const int a=10;
int *p=&a;
*p=30;
printf("%d",a);
return 0;
}
c语言运行结果如下:
c++编译过程会出错
注意:上述两个编译运行的环境不一样,一个是在c环境下,一个是在c++环境下。
2.变量的定义更灵活
c语言所以变量定义必须在最前面,所以起来很不方便,但是c++可以实现变量的边使用边定义功能,非常方便。
3.函数的增强
在c++中增加了内联函数,默认参数,函数重载,函数模板等概念。
4.结构体的增强
c中定义结构体变量需要加上struct关键字,c++不需要。
c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数。
5.增加了bool类型
早期c语言没有bool类型,用非0表示真,0表示假
c++有新增加bool类型。
bool类型只有两个值,true(1值),false(0值)
bool类型占1个字节大小
给bool类型赋值时,非0值会自动转换为true(1),0值会自动转换false(0)
c语言中的bool类型
c语言中也有bool类型,在c99标准之前是没有bool关键字,c99标准已经有bool类型,包含头文件stdbool.h,就可以使用和c++一样的bool类型。
6.语法更严格
严格的类型转换
在C++,不同类型的变量一般是不能直接赋值的,需要相应的强转。
但是在C语言中有些却可以直接赋值,比如:
int* p = malloc(10);//C语言可以
int* p = malloc(10);//C++语言不可以
int* p = (int *)malloc(10);//C++语言不可以
变量类型要求
在C语言中,int fun() 表示返回值为int,接受任意参数的函数,int fun(void) 表示返回值为int的无参函数。
在C++ 中,int fun() 和int fun(void) 具有相同的意义,都表示返回值为int的无参函数。
7.字符串的处理方法
C语言用字符数组存放字符串,并在此基础上进行字符串运算。
c++除了用上述方法外,还提供了一种更方便,更安全的方法。c++提供了一种新的数据类型-string类型,但是在使用时要加上
#include<string>