C语言和C++的区别到底有多少?不要再傻傻分不清楚了
1、关键字
蓝色标注为C语言关键字,C++继承了C语言的所有关键字,以下红色标注为C++中含有但C语言没有的关键字(根据c++98中提出C++包含63个关键字)
2、源文件区别
C语言文件后缀为.c,c++原文件名后缀为.cpp
如果在创建源文件时什么都不给,默认是.cpp
3.返回值不同
C语言中,如果一个函数没有指定返回值类型,默认为int类型,并返回一个随机数,一般为0XCCCCCCCC
在C++中,如果函数没有返回值则必须指定为void型,否则编译不能通过 、
4、参数列表
在C语言中,函数没有指定的参数列表时,默认可接收任意多个参数
在C++中,有严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。
注意:
带缺省值的参数必须放在参数列表的最后面。因为传参是从右向左的。
缺省参数不能同时在函数声明和定义中出现,只能二者留其一。
缺省值必须是常量或者全局变量。
C语言并不支持缺省。
5、C++支持函数重载,C语言不支持
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。
例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。
在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似:
void swap1(int *a, int *b); //交换 int 变量的值
void swap2(float *a, float *b); //交换 float 变量的值
void swap3(char *a, char *b); //交换 char 变量的值
void swap4(bool *a, bool *b); //交换 bool 变量的值
但在C++中,这完全没有必要。C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading)。借助重载,一个函数名可以有多种用途。
6、指针和引用
C语言中函数传参方式有两种:传值和传址
以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时形参。
它的优点是避免了函数调用的副作用,却无法改变形参的值。如果要改变实参的值,只能通过指针传递。
指针可以解决问题,但是不安全,因此在C++中引入了引用。
引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。
类型& 变量(对象名)=引用变量
int &num1=num0;
引用特性;
1、引用定义时必须初始化
2、一个变量可以有多个引用
3、引用一旦绑定一个实体就不能改变为其他变量的引用
//指针和引用的区别
引用不可以为空,但指针可以为空
引用不可以改变指向,对一个对象”至死不渝”;但是指针可以改变指向,而指向其它对象
引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。
7、命名空间
在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。而C语言中没有。
8、输入与输出
cout代表c++的输出流
cin代表c++的输入流
它们都是在头文件“iostream”中定义。
“cout”必须与”<<”一起使用,“<<”起到插入的作用。
在一条语句中可以多次使用“<<”输出多个数据。
如:cout<
#include
using namespace std;
int main()
{
int a,b;
cout<<“请输入a,b的值”<<endl;
cin>>a>>b;
cout<<“输出a的值”<<a<<“输出b的值”<<b<<endl;
return 0;
}
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习C/C++或者为了入行、转行学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频
教程内容包括
1.开发环境搭建
2.C语言教程
3.C++教程
4.数据结构与算法
5…Net全套教程
6.C++Primer教程
7.项目实操
小编手里有学习c的资料和群,需要的可以私聊小编。裙号:
【854 367 391】(验证输入002即可啦)