C/C++的区别

一、C++与C语言的不同点(语法的变化)

  • 宏观角度变化

    1、C++基本支持C语言的所有语法。
    2、支持面向对象的编程思想。
    3、C++支持运算符重载和引用。
    4、C++支持泛型编程(模板支持)。
    5、C++支持异常处理(catch、try)。
    6、C++有严格的类型检查(void* 不能与其他类型进行转换,其他类型数据不能为枚举赋值)。
    #if __cplusplus
    printf(“C++\n”);
    #else
    printf(“C\n”);
    #endif

  • 细节变化

    1、文件扩展名
    C: .c .h
    C++:.cpp .C .cc .cxx
    2、编译器
    g++ 大多数电脑需要额外安装:Ubuntu:sudo apt-get g++
    gcc 也可以继续使用,但需要添加 -lstdc++
    3、常用的头文件
    #include C++原生的头文件不带.h 以示与C的区分
    C语言的头文件可以继续使用 #include <cstdio(stdio.h也能继续使用)>
    4、数据的输入输出
    cout << 数据/变量
    endl 换行
    cin >> 变量(不需要取地址,不需要占位符,C++会自动推倒)
    多个数据之间使用 << >> 分隔
    scanf/printf也可以继续使用
    5、增加的名字空间
    std::标识符//临时使用
    using namespace std;//导入空间,只需要导入一次
    6、结构体的变化
    1、C++中在使用结构体时struct关键字可以省略,不需要再 typedef
    2、结构体中可以定义成员函数,只能通过结构对象(-> 或 .)调用,在成员函数中可以直接使用成员变量。
    7、枚举和联合
    1、在定义枚举,联合对象时enum、union可以省略。
    2、整型数据不能为枚举赋值。
    3、联合中也可以有成员函数,用法与struct一致。
    8、操作符别名
    在某些欧洲语言所用的键盘上字母比26个字母多,因此就占用了键盘上的’-,&'等符号,国家标准化组织就规则了这些运算符的别名,即使有些运算符不存在,也可以正常进行编程。
    && --> and
    || --> or
    { --> <%
    } --> %>
    9.内存管理
    1、C语言中的内存管理还能进行使用,malloc/free。但是需要类型转换,void* 不能自动转换为其他类型。
    2、在C++建议使用 new(分配内存)/delete(释放内存) 操作符管理内存。
    3、new 返回的是带类型的地址,不需要转换。
    new 类型[数量] //必须要使用 delete [] 指针;来释放
    new 类型(初始值)
    4、delete 释放空指针时不会出错 但 释放野指针是不确定的,但 delete 不能重复释放内存。
    5、如果 new 申请内存失败会抛出异常。
    10.strtic关键字

    1.C中:用来定义静态变量、内部函数,可以修改数据的作用域(限制)、生命周期(延长)、存储位置(修改)

  • 限制全局变量和函数的作用域(由整个程序限制在只能.c文件内使用)

  • 延长局部变量和块变量的生命周期(main执行前就定义好,程序结束后才释放,生命周期虽然延长,但是作用域没变)

  • 修改局部变量和块变量的存储位置(由原来的栈修改为静态数据区或全局区)
    2.C++

  • static不包含在对象实例中,一个类只能有一份static成员,所有的对象共享。

  • static成员必须在类外的下面定义及初始化。

  • static成员函数没附加this,但也能通过对象调用,也可以通过类名::函数调用,但不能在静态成员函数中调用普通成员函数、和普通成员变量,但可以直接访问静态成员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值