C和Cpp区别
1.输入,输出不同(out,put)c语言:#include<stdio.h>scanf("%d",&a);printf("a = %d\n",a);cpp:#include<iostream>using namespace std;cin>>a>>ch;cout<<"a = "<<a<<"ch = "&l
1.输入,输出不同(out,put)
c语言:#include<stdio.h>
scanf("%d",&a);printf("a = %d\n",a);
cpp:#include<iostream>
using namespace std;
cin>>a>>ch;cout<<"a = "<<a<<"ch = "<<ch<<endl;
2.常量
cpp中const常变量在编译时被替换,定义的变量有类型,占用存储单元,有地址,可以用指针指向它,但不能修改它
c语言中习惯用#define来定义常量,实际上,这种方法只是在预编译时进行字符置换,不占用存储单元,容易出错
3.引用(别名)
在cpp没有空引用(int &a;),引用时必须要初始化(int &a = c;),没有引用的引用。
void Swap_Int(int& a, int& c)
{
int tmp = a;
a = c;
c = tmp;
}
int main()
{
int a = 10;
int b = a;
int& c = a;//引用
//a就是c,c就是a,对a的改变就是对c的改变,对c的改变就是对a的改变,取a的地址就是取c的地址,取c的地址就是取a的地址
int d = 30;
Swap_Int(a, b);
return 0;
}
4.函数重载
cpp中区分函数----函数名(相同)+(形参类型+形参个数)(不同)---->函数重载
c中区分函数-----函数名
在cpp中,靠返回类型,函数名,参数列表区分函数
函数重载:函数名相同,参数个数或类型不同或者两个都不同
返回类型不能作为函数重载的依据
int Max(int a, int b)
{
return a > b ? a : b;
}
int Max(int a, int b,int c)
{
return Max(a, Max(b, c));
}
char Max(char a, char b)
{
return a > b ? a : b;
}
double Max(double a, double b)
{
return a > b ? a : b;
}
int main()
{
int max_int = Max(12, 23);
char max_char = Max('a', 'b');
double max_double = Max(12.23, 23.34);
}
5.cpp的函数形参依次可以给默认值
从右向左依次给形参给默认值,不能跳着给
函数调用时如果给形参全部赋值,会替换默认值
函数调用时必须从左向右给实参给值,默认值可以不给
函数有声明时,默认值必须在声明中给
void fun(int a, int b, int c, int d = 0)
{
}
int main()
{
fun(1, 2, 3);
fun(12, 23, 45, 67);
}
6.堆区开辟空间不同
c以前博客有介绍
cpp:new开辟,delete删除
int *p = new int(10);//开辟一个空间,并将其初始化为10;
delete p;p = NULL;//释放刚刚开辟的空间
int *s = new int;//开辟一个空间,不初始化
delete s;s = NULL;
new *ps = new int[n];//开辟n个整形空间
delete []s;//释放
int main()
{
int n = 0;
int* s = new int;//开辟一个整型空间,不赋值
int* p = new int(10);//开辟一个整型空间,并将其初始化为10
int* q = new int[n];//开辟n个整型空间
delete s;
s = NULL;
delete p;
p = NULL;
delete[]q;//释放连续的多个整型空间
q = NULL;
}
7.
//.c文件(C89)语句之后不能再定义变量,否则编译不通过(比如在执行printf语句之后不能再定义变量)
//.cpp(C99)可以,遵循的标准不同
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)