美文网首页
C++基础(关键字一)

C++基础(关键字一)

作者: 星辰照耀你我 | 来源:发表于2019-10-17 20:51 被阅读0次

C++中的关键字

关键字是系统预留的、具有特殊意义的单词,一般不允许用户作为变量名来使用,常见的关键字除如if、else、int 、char 等熟悉的单词之外,还有一些不常见,但在我们深入学习时会经常遇到,在这里也整理一下。
1.asm内嵌汇编
asm允许用户在编程时给代码中直接加入汇编语言,将汇编语言写入__asm后的大括号中即可。

__asm{
    int 3; //触发一个断点
}

2.typedef定义类型

  • typedef在使用时多用于指定的类型起一个别名,为了书写方便并增加代码的可读性,但需要注意的是typedef并不等同于简单的字符替换,而是真正意义上的定义一个新的类型。
    例如当我们使用char *p1,p2时,定义的p2是char类型而不是char *型,想要达到我们想要的结果需要char *p1,*p2这样书写,但我们使用typedef重定义这个数据类型时:
    typedef char* pCHAR
    再使用pCHAR p1,p2定义的两个变量类型均为字符型指针。

3.auto自动
(1) 这个关键字在C和C++中有着明显的区别,在C中每一个变量不特别说明其类型(这里的类型指的是静态(static)、外部类型变量(extern)等)时均为auto类型,且使用auto a;这样的方式定义变量也是正确的,没有为a赋初值,也没有说明具体的数据类型(int、char等)时默认为int型。
(2) 在C++中,auto类型定义的变量必须赋初值或初始表达式,因为C++中的auto类型是编译器根据表达式中变量的类型来确定定义变量的类型,例如auto x=1.1f为x赋了初始值编译器会按照值1.1f确定x的类型为float,但auto x;这样的定义是错误的,既没有定义变量的类型也没有为变量赋初值。

4.inline内联
在定义函数前加上 inline关键字表示这个函数为内联函数,内联函数解决的是大量掉用小函数而开辟栈帧造成的空间浪费,当一个函数被设置为内联函数时,再次调用将不会为这个函数开辟栈帧,而是直接替换的方式执行,常见的小操作例如判断奇偶数、是否是X的倍数等简单的操作在执行时都会直接被替换。

需要注意的是inline函数仅仅是一个对编译器的建议,所以最后能否真正内联,看编译器的意思,它如果认为函数不复杂,能在调用点展开,就会真正内联,并不是说声明了内联就会内联,声明内联只是一个建议而已。

所以在实验的时候发现不论写不写inline都会正常的压参开辟新的栈帧。

5.typeid类型
返回这个变量的类型名称,使用type(i).name()获取变量类型

类型打印

6.struct结构体
struct结构体用来将几个同时需要发送的多数据类型变量打包,方便维护大型的结构而造成代码的晦涩,在struct中会为其中的每一个变量分配各自的空间,一般定义为:

struct STUDENT 
{
    int Snumb;
    char Sname[100];
    double Ssorce;
}st; 

这个结构体的名称为struct 后的,而st是直接在这个结构体后定义的一个变量,可以直接使用。
定义变量可以省略,在C++中之后需要使用的时候可以省略struct直接使用STUDENT a,b,c;就可以直接使用(C语言中必须加上struct)。
而结构体名的省略一般在函数中出现,也不会影响他发挥作用。
当typedef与struct一起出现时是为新定义的结构体取别名,例如:

typedef struct POINT  
{  
    int x;  
    int y;  
}Pp;     别名,还需要定义变量
Pp p1;

7.union共用体
union与struct一样都定义了一个含有多个数据类型的组合,但union在使用时为了缩减空间让所有的成员公用一个空间,这个空间的大小由最大的成员大小所决定。
其用法与struct相同,也可以省略变量名。

union STUDENT
{
    int Snumb;
    char Sname[100];
    double Ssorce;
}st;

此时union共用体所占的空间大小就是char类型数组的大小,100Byte。

8.enum枚举类型
表示此类型的变量只能取范围内的值,比如颜色种类有限,或者星期几这样的变量。

enum pColor
{
  red,
  green,
  bule
};
pColor Col = bule;

但枚举类型的成员从0开始赋值,依次累加,所以当输出Col时结果为1。

9.static变量

static限定词的主要作用是用来隐藏变量或函数,使当前文件中的不被其他文件所使用,而不加限定时定义的变量均为全局可见,这个特点可以在不同的文件中通过static修饰而不用受同名变量限制。

且static在修饰变量的时候可以保证变量只会初始化一次,同全局变量一起存放在静态变量存储区,例如在一个函数中定义了一个static int x=100;则他的生存周期是整个源程序,不论之后调用了多少次函数,都不会再次初始化这个变量x(功能相当于全局,但是对其他文件隐藏)。

10.捕捉异常处理关键字try、catch、throw
在使用他们时,通常try标记可能出现异常的代码段,使用throw抛出异常,catch捕获这个异常并按照需要将其处理。

try
{
    throw XXX;
//可能异常代码片段
}
catch(...)
{
  std::cout << "!!!";
}

需要注意的是在catch中可以确定需要捕获的异常的数据类型,当使用...时表示捕获所有数据类型的异常。

11.namespace命名空间
namespace定义一个命名空间,将指定的一些变量放进这个命名空间中与其他的实体分开。
例如

namespace ns1
{
    char a;
    int b;
}

虽然这样的定义不会影响变量的性质,仅仅是把他们放入命名好的空间中,但使用它们的时候必须限定命名空间,ns1::a这样的使用方式。在变量很多的时候这样可以在不同的命名空间中使用同名变量,使用时加上空间的限定。

------续

很多的关键字还是需要对C++更加了解才能摸清楚,先去熟悉熟悉C++叭。

相关文章

  • 2022-06-21

    C++入门基础知识 一、C++中总计有63个关键字: 其中画圈的是C语言的关键字。这里要注意了:false和tru...

  • C++中容易被忽略的基础知识

    const和define的区别C++中static关键字的总结C++中的构造函数及深拷贝浅拷贝c++基础之引用和指...

  • C++基础(关键字一)

    C++中的关键字 关键字是系统预留的、具有特殊意义的单词,一般不允许用户作为变量名来使用,常见的关键字除如if、e...

  • Boolan - C++学习笔记 _STL - 第三周

    STL与泛型编程(三)阅读C++ STKL源码的基础条件1 操作符重载operator是C++的关键字,它和运算符...

  • C语言和C++的区别到底有多少?不要再傻傻分不清楚了

    1、关键字 蓝色标注为C语言关键字,C++继承了C语言的所有关键字,以下红色标注为C++中含有但C语言没有的关键字...

  • c++第一讲

    目标 c++关键字 命名空间 c++输入和输出 缺省参数 函数重载 引用 内联 auto关键字 基于范围的for循...

  • C++的关键字public,private和protected

    先写最基础的吧。C进入C++最先碰到的就是class,跟structure很像,但是一开始就多了几个关键字publ...

  • cpp模板

    总结下c++模板相关的基础知识,便于查阅。 模板: 模板定义以关键字template开始,后跟一个模板参数列表,这...

  • C++基础(关键字二)

    要对有些复杂的关键字有所理解,还是需要对C++有着更深入的了解。 11.const、volatile、mutabl...

  • C++学习笔记目录

    C++初步 C++数据长度 C/C++ 堆 栈 静态 常量 代码 区 static关键字 C++类和对象 C++引...

网友评论

      本文标题:C++基础(关键字一)

      本文链接:https://www.haomeiwen.com/subject/jmshmctx.html