码迷,mamicode.com
首页 > 编程语言 > 详细

C++Review16_关键字复习

时间:2020-02-29 00:23:12      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:存在   定义   需要   volatile   静态变量   mes   存储   取出   union   

static关键字

主要有4个使用场景:
1、修饰类的成员变量和成员方法(常用):
被修饰的成员属于类,不属于单个类对象,为所有类对象所共享。
并且建议通过类名调用。被修饰的成员变量与方法存放在静态存储区。

2、 函数内的静态变量:
其作用范围为函数内,其生命期为整个程序生命期。
这样可以保证多次调用中其值一直得以保存。
该变量在内存中只被分配一次。

3、模块内的静态全局变量:(还可以是静态函数)
可以被模块内所用的函数访问,不能被其他模块的函数访问。(在其他模块中使用需要使用 using namespace);
全局变量本身是静态存储的,静态全局变量也是静态存储的。
但是非静态全局变量的作用域是整个程序(一个源程序由多个源文件组成),非静态全局变量在所有源文件中都是有效的。
静态全局变量则限制了其作用域,只在定义该变量的源文件内有效,同一程序的其他源文件不能使用它。
这样做的好处是,可以避免其他源文件的引用而引起错误。

 

static起初是为了表示退出一个块后仍然存在的局部变量。

后来又有了第二种含义,用来表示不能被其他文件访问的全局变量和函数。

这是为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。

 

=================================================

sizeof 是关键字不是函数

extern :置于变量和函数前,以表示变量或者函数的定义在别的文件中。

volatile:用于告知编译器其修饰的变量随时可能发生变化,每次使用它是必须从内存中重新取出。

=================================================

struct关键字

  将一些相关联的数据打包成一个整体,方便使用。

  结构体所占空间大小是其成员所占内存之和。

  但是结构体

  struct student{

 

  }stu;

  sizeof(stu)的值是多少?不是0,而是1。

  因为编译器认为任何数据类型都有其大小。

 

struct和class关键字区别:

  一般两者可以通用,但是有一个很小的区别,就是struct成员默认是public的,而class成员可以是private的。

 

struct和union关键字区别:

union维护足够多的空间来存放多个数据成员中的“一种”。而不是为每一个数据成员配置空间。

在union中所有的数据成员共用一个空间。同一时间只能存储其中一个数据成员。

所有的数据成员具有相同的起始位置。

对union成员的存取都是从联合体基地址的偏移量为0处开始的。

也就是说联合体的访问不论对哪个变量的存取都是从union的首地址位置开始的。

另外我们还可以使用union来判断当前系统是大端存储还是小端存储:

int checkSystem()

{

  union check{

    int i;

    char ch;

  }c;

  c.i = 1;

  return(c.ch  == 1);

利用union数据类型的特点,所有成员的起始地址一样。

如果true,则ch是1,则说明是小端法;

如果false,则ch是0,则说明是大端法;

至于什么是大小端,可以查看我之前的文章:

何为大小端:https://www.cnblogs.com/grooovvve/p/10710270.html

 

=================================================

enum关键字

enum枚举与#define宏的区别

  #define宏一次只能定义一个,而且不能调试,其原理只是在预编译阶段进行简单的替换而已;

  enum一次可以定义大量相关的常量,可以调试,枚举常量是在编译时候确定其值的;

=================================================

typedef关键字

简单来讲就是可以给已经存在数据类型重新取名字;

很常用的情况就是给结构体重新取名;

 

 

 

 

 

  

C++Review16_关键字复习

标签:存在   定义   需要   volatile   静态变量   mes   存储   取出   union   

原文地址:https://www.cnblogs.com/grooovvve/p/12381090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!