一.C语言关键字
1.C89关键字
一共32个关键字
修饰类型(8):auto-static-extern-register signed-unsigned const volatile
基本类型(7):void short-long char-int float-double
复合类型(4):typedef struct union enum
计算类型(1):sizeof
判断语句(7):if-else switch-case -default goto-return
循环语句(5):for do-while break-continue
2.C99关键字
inline restrict _Bool _Complex _Imaginary
3.C11关键字
_Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic
二.C++关键字
1.C++98/03关键字
一个有63个关键字
修饰类型(8+1):auto-static-extern-register signed-unsigned const-mutable volatile
基本类型(7+4):void short-long chart-int double-float wchar_t bool true-false
复合类型(4):typedef enum struct-union
计算类型(1+1):sizeof typeid
判断语句(7):if-else goto switch-case-default return
循环语句(5):for do-while break-continue
异常语句(3):try-catch-throw
对象类型(11):this-class new-delete public-protected-private virtual-friend-inline-operator
命名空间(6):using namespace export template typename asm
类型转换(5):dynamic_cast static_case const_case reinterpret_caset explicit
2.C++11关键字
alignas alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local
三.C和C++的区别
C++是对C的增强,C++是强类型语言
1.类型检查更为严格
新增了两种新修饰类型:explicit mutable
新增了四种新类型:wchar_t bool true-false
新增了类型检查符:typeid
2.增加了面向对象和运算符重载的机制
新增了十一种新对象类型:new-delete this-class public-protected-private operator-virtual-friend-inline
3.增加了泛型编程和标准模板库命名空间
新增了六种新命名空间:using-export namespace-template typename asm
4.增加了异常处理
新增了三种新异常语句:try-catch-throw
四.C和C++的兼容
C的大部分代码都能在C++上运行,但是C++的大部分代码不能在C上运行
1.变量声明的位置
C中的变量声明和代码是分开的,必须在函数开始处声明
C++中,变量可以在任意处声明,只要保证先声明再使用的原则
2.struct结构体
在C中声明struct变量必须写成:struct mystruct a;
在C++中前面struct可以省略:mystruct a;
在C++中,struct结构体支持成员函数默认访问为public(),但是在C中不行(类的默认访问为private)
很少人会在结构体里面加类,顶多有一个构造函数
3.bool类型
在C++中有bool(或boolean类型),在C中没有布尔类型,只有数值类型
4.注释不同
在C中注释只有一种/*...*/
在C++中的注释包含两种/*...*/和//
5.强制数据类型转换
在C中的强制转换形式为:(类型)变量
在C++中还可以使用:类型(变量)
6.赋值
在C中的赋值只有一种=
在C++中还可以用(),比如int x(5)等于int x=5
7.函数
在C中函数没有默认参数值,不允许有同名的函数,未声明和定义函数之前调用函数是允许的
在C++中函数有参数默认值和函数重载,必须先声明原型或定义才能调用函数
注意:在C++中赋初始值必须从参数列表的右边开始赋值,从左边开始赋值将会出错
8.运算符&和const
在C中运算符&表示取地址,函数不能用const
在C++中运算符&还可以表示引用,可以用void a()const{...}
9.extern
在C中在其他模块共享一个全局变量不用加extern
在C++中在其他模块共享一个全局变量必须先用extern声明
10.void指针
在C中void指针可以赋给任何类型的指针
在C++中必须先进行强制数据类型转换再赋值