1.输入,输出不同(out,put)
c语言:#include
scanf("%d",&a);printf("a = %d\n",a);
cpp:#include
using namespace std;
cin>>a>>ch;cout<<"a = "<
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)可以,遵循的标准不同
|