Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 1.25 KB

3.md

File metadata and controls

33 lines (27 loc) · 1.25 KB

const和volatile分析

const修饰变量

  • 在C语言中const修饰的变量是只读的,其本质还是变量;
  • const修饰的变量会在内存中占用内存;
  • 本质上const只对编译器有用,在运行时无用;
  • 但是可以通过指针对其修改。

const修饰数组

  • 在C语言中const修饰的数组是只读的;
  • const修饰的数组空间可不被改变。

const修饰指针

const int* p;  // p可变,p指向的内容不可变
int const* p;  // p可变,p指向的内容不可变
int* const p;  // p不可变,p指向的内容可变
const int* const p;  //p和p指向的内容都不可变

口诀:左数右指

  • 当const出现在*号左边时指针指向的数据为常数;
  • 当const出现在*号右边事指针本身为常量。

const修饰函数参数和返回值

  • const修饰函数参数表示在函数体内不希望改变参数的值
  • cosnt修饰函数返回值表示返回值不可改变,多用于返回指针的情形。

深藏不露的volatile

  • volatile可理解为“编译器警告指示字”;
  • volatile用于高速编译器必须每次去内存中取变量值;
  • volatile主要修饰可能被多个线程访问的变量;
  • volatile也可以修饰可能被未知因数改变的变量。