C语言与C++的区别
1)输入输出
c语言输入输出头文件为<stdio.h>
c++语言输入输出库函数为<iostream>
//c语言
#include<stdio.h>
int main()
{
int a;
char b;
scanf("%d,%c",&a,&b);
printf("%d,%c\n",a,b);
return 0;
}
//c++
#include<iostream>
using namespace std;
int main()
{
int a;
char b;
cin>>a>>b;
cout<<a<<b<<endl;
return 0;
}
//c++对输入输出变量类型不做要求,而c对输入输出类型有要求
2)c++定义常量时最好定义常变量,也就是用const定义。
因为宏常量在定义的时候不开辟空间,在预编译时进行替换,同时没有变量类型。
而常变量开辟空间,有类型,在编译时进行替换。
3)c++包含了引用,即别名。
在函数调用进行传参时,使用引用甚至比使用指针更加通俗易懂,简洁明了。
1.没有所谓的空引用(不同于空指针)
2.定义引用时必须给予初始化
3.没有引用的引用(二级引用)(不同于二级指针)
4)函数重载
c语言通过函数名区分函数
c++通过函数名和参数类型,参数个数区分函数
5)c++形参可以赋默认值
c++给默认值必须从右向左依次赋值,不能越过其中一个形参给下一个形参默认值。
在调用函数时,如果函数对形参进行了默认值赋值,那么函数在调用时可以不用将所有的参数进行传递。如果传参时将默认值修改,则变量值为传递值(由左到右依次传递)。
#include<iostream>
using namespace std;
void fun(int a,int b,int c,int d = 10,int e = 0;)
{
cout<<a<<' '<<b<<' '<<c<< ' '<<d <<' '<<e;
}
int main()
{
fun(10,20,30);
return 0;
}
运行结果:
6)堆区开辟空间的不同
c语言使用malloc开辟空间,free释放空间
c++语言使用new开辟空间,delete释放空间
int main()
{
//c语言
int *p = (int*)malloc(sizeof(int)); //仅开辟空间,未对其进行赋值
*p = 100;
free(p);
p = NULL;
//c++
int *s = new int(10); //开辟空间的同时进行初始化
delete s;
s = NULL;
return 0;
//malloc需对开辟空间类型进行强转,而new则不需要。
}