C语言和C++的一些区别

C语言和C++的一些区别

C++在语法上比C语言有了一些改进

  • C语言的变量申明必须放在函数最上面,C++没有这个限制
  • C语言的结构体不能直接当数据类型使用,必须加上struct关键字,而C++没有限制

    • C语言的结构体使用:
    struct student
    {
          char* name;
          int   age;
    };
    int main()
    {
          struct student stu = {0};   //使用结构体时必须要加上struct
          stu.name = "Bob";
          stu.age = 18;
          return 0;
    }
    • C++的结构体使用
    student stu = {0};   //使用结构体时直接当成数据类型即可
  • C语言无法使用引用,C++加入了引用(即“&+变量”式的指针)机制
  • C++加入了bool型数据类型,C语言是没有的
  • C++加入了命名空间 using namespace
  • 定义域,例如:

    std::cout<<name;
  • C++ 加入了函数重载机制,允许使用同名但不同参数列表、不同返货类型的多个函数定义

  • C语言中没有默认参数,在使用默认参数时要注意二义性问题,尽量不要在设置了默认参数时使用函数重载
  • C++ 中加入了初始化语法,例如int a(5);,其实这个是把a初始化为5,等价于int a = 5;,类似的,动态内存申请也可以这样初始化,例如

    int* a = new int(5);    //申请4字节的int型内存空间,并将其初始化为5

    而对于new动态内存申请,跟多的用到的是[],l例如

    int* a = new int[5];    //申请5个int型内存空间(20字节),相当于一个有5个元素的int型数组
  • C++ 中struct结构体升级变得和类类似,可以拥有成员函数,析构函数等,但成员属性都是public。

    *  注:不过,本质上struct还是原来的结构体(和class不一样),本身没用成员函数,只是C++的编译器在编译时自动把你写的成员函数 编译成外部函数 并通过 引用 *实现“成员函数”的功能,也就是说struct和class有本质的区别,struct中没有class中的this指针。
      结构体中的成员函数只是为了提高编程效率,给程序员减轻一些负担而产生的一种优化。

  • 在C++ 中inline内联函数代替C语言中的宏函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值