[C.C++] C和Cpp区别

887 0
Honkers 2025-8-16 08:29:23 来自手机 | 显示全部楼层 |阅读模式

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;),没有引用的引用。

  1. void Swap_Int(int& a, int& c)
  2. {
  3. int tmp = a;
  4. a = c;
  5. c = tmp;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = a;
  11. int& c = a;//引用
  12. //a就是c,c就是a,对a的改变就是对c的改变,对c的改变就是对a的改变,取a的地址就是取c的地址,取c的地址就是取a的地址
  13. int d = 30;
  14. Swap_Int(a, b);
  15. return 0;
  16. }
复制代码

4.函数重载

   cpp中区分函数----函数名(相同)+(形参类型+形参个数)(不同)---->函数重载

   c中区分函数-----函数名

    在cpp中,靠返回类型,函数名,参数列表区分函数
    函数重载:函数名相同,参数个数或类型不同或者两个都不同
               返回类型不能作为函数重载的依据

  1. int Max(int a, int b)
  2. {
  3. return a > b ? a : b;
  4. }
  5. int Max(int a, int b,int c)
  6. {
  7. return Max(a, Max(b, c));
  8. }
  9. char Max(char a, char b)
  10. {
  11. return a > b ? a : b;
  12. }
  13. double Max(double a, double b)
  14. {
  15. return a > b ? a : b;
  16. }
  17. int main()
  18. {
  19. int max_int = Max(12, 23);
  20. char max_char = Max('a', 'b');
  21. double max_double = Max(12.23, 23.34);
  22. }
复制代码

5.cpp的函数形参依次可以给默认值

       从右向左依次给形参给默认值,不能跳着给
        函数调用时如果给形参全部赋值,会替换默认值
        函数调用时必须从左向右给实参给值,默认值可以不给
        函数有声明时,默认值必须在声明中给

  1. void fun(int a, int b, int c, int d = 0)
  2. {
  3. }
  4. int main()
  5. {
  6. fun(1, 2, 3);
  7. fun(12, 23, 45, 67);
  8. }
复制代码

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;//释放

  1. int main()
  2. {
  3. int n = 0;
  4. int* s = new int;//开辟一个整型空间,不赋值
  5. int* p = new int(10);//开辟一个整型空间,并将其初始化为10
  6. int* q = new int[n];//开辟n个整型空间
  7. delete s;
  8. s = NULL;
  9. delete p;
  10. p = NULL;
  11. delete[]q;//释放连续的多个整型空间
  12. q = NULL;
  13. }
复制代码

7.

     //.c文件(C89)语句之后不能再定义变量,否则编译不通过(比如在执行printf语句之后不能再定义变量)
     //.cpp(C99)可以,遵循的标准不同

 

 

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行