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)可以,遵循的标准不同

 

 

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐