一.C C++ 编译器默认类型的转换表

 double      <=  float

     |

unsigned

     |

  long

     |

   int         <= short  char (signed  unsigned)

横向箭头:无条件转换

纵向箭头:从下向上进行转化

二.const

Const 修饰一个变量,表示该变量从此以后,不能再作左值。

 C语言的const

1 .不一定要初始化

2.const修饰的变量 ,叫长变量,不能叫常量

3.不能当常量来使用,比如说来定义数组的大小

4.常变量的编译方式和普通变量没有区别

C++ 的const

1 .一定要初始化

2.const修饰的变量 ,叫常量

3.能当常量来使用,比如说来定义数组的大小

4.常变量的编译方式和普通变量有区别,在编译的过程中,把常量替换成常量的值

5.如果初始值是一个变量,此时C++的常量和C语言中的常量等价

三,const 和一级指针的结合

保证const的安全:代码上,不能直接或间接修改常量值

直接:让常量作为左值

间接:泄露了内存的地址或者引用;

           不能泄露给一个普通的指针和普通的变量引用

类型转换的问题:

const int *  => int * 错

 int *  =>const int *   对

二级指针

int** => int *const*; 正确的类型转换

int *const*=>int ** 正确的类型转换

要么都有const ,要么都没有

int** => const int** 错

const int ** =>int **  错

volatile :包含两层含义

解决了多线程缓存内存可见性问题和指令

1.保证多线程在执行的过程中,对线程共享变量不进行线程缓存

c c++ 中const volatile 的用法及默认转换表

2.编译器不能对volatile 修饰的变量进行指令顺序的调整

在我们编译器会对我们的代码进行一些代码的优化



四.引用及const和引用的结合

1引用更安全的指针

&左边有类型 叫引用,没有叫取地址

1.定义变量时,名字左边有&符号,就是定义了一个引用变量

2.引用必须初始化

3.引用定义时,引用了哪块内存,就永远不能在改变了,不能再引用其他内存

4.引用只能定义一级,不能出现二级 ...



相关文章:

  • 2021-09-04
  • 2022-12-23
  • 2021-08-26
  • 2021-10-27
  • 2021-06-11
  • 2021-07-21
  • 2022-12-23
  • 2021-10-23
猜你喜欢
  • 2021-09-03
  • 2021-10-08
  • 2022-02-14
  • 2021-06-19
  • 2021-06-06
  • 2021-05-20
相关资源
相似解决方案