面试官:说一下你对const static volitale的理解 =_=

简介: 面试官:说一下你对const static volitale的理解 =_=

悲伤的往事

当我在简历中写到:精通C语言。

面试官:你好 ,谈谈你对volitale的理解吧,为什么会有volitale,他有什么用?

我:volit…………???

面试过后,我决定洗心革面,重新做人,没错,深剖C!!!

于是就有了这篇博客

1.const

用const修饰的变量意为不可直接修改的变量(常变量)

拥有变量属性,其值不可修改

>>  const修饰一般变量

补充:const不能修饰内置关键字,像const int a这样; 就等价于 int const a;

>>  const修饰指针变量

>>  const修饰函数返回值和参数

①修饰形参。

void show(const int* p) {
  printf("%d", *p);
}
int main()
{
  int a = 10;
  int* p = &a;
  show(p);
  return 0;
}

注:如果不想对实参进行修改,那么可以为形参加上const,提高代码的健壮性,

 

②修饰返回值

这个一般很少用到,举个例子了解下即可。

 

>>  const难点

这两段代码都合法嘛???

先编译第一段,可以编过,但是会有警告。

原因是p是用const修饰的,p赋给了没有用const修饰的q,相当于权限放开了

第二段代码自然就没问题了,相当于给q新增了const权限

这是我的const学习笔记

 

2.static

static是一个存储关键字,它可以修饰局部变量,全局变量,函数

在谈static之前,我们先看一下C地址空间,全局变量存在哪,局部变量存在哪……

 

>> 修饰局部变量

局部变量特点:在代码块中定义的叫局部变量,随函数调用开辟,函数结束释放

static 修饰局部变量改变的是它的生命周期,从原来的栈上开辟变为在全局静态区开辟

 

>>  修饰全局变量

static修饰全局变量,改变它的作用域,限制它只能在本文件内使用

 

>>  修饰函数

static修饰函数,限制它只能在本文件内被调用

 

3.volitale

这里直接贴一张我的笔记图

举个例子:

int flag = 1;

while(flag){

       printf("hello world");

}

如果flag不加volitale,编译器默认优化,把flag加载到cpu寄存器里,编译器发现你在循环判断的时候没有对flag的值进行修改,所以它以后读取flag的值就是寄存器里的值,从而提高效率。

欢迎指正!!!🌹 🌹 🌹

相关文章
|
29天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
25 3
|
3月前
|
Java
【Java基础面试四十一】、说一说你对static关键字的理解
这篇文章主要介绍了Java中static关键字的概念和使用规则,强调了类成员与实例成员的区别及其作用域的限制。
|
3月前
|
存储 Java 对象存储
【Java基础面试四十三】、 static和final有什么区别?
由于网络原因,我无法获取到您提供的链接内容。如果需要我解析该网页,请确保链接有效并重试,或者提供其他问题,我会尽力帮助您。
|
3月前
|
Java
【Java基础面试四十二】、 static修饰的类能不能被继承?
这篇文章讨论了Java中static关键字修饰的类是否可以被继承,解释了静态内部类的概念、规则以及如何实例化。
|
6月前
|
Java
【JAVA面试题】static的作用是什么?详细介绍
【JAVA面试题】static的作用是什么?详细介绍
|
6月前
|
索引
【ES6新语法】let、const、var的区别,你学会了面试官没话说
【ES6新语法】let、const、var的区别,你学会了面试官没话说
|
6月前
|
存储 JavaScript 前端开发
每日一道javascript面试题(八)你真的知道了解const吗
每日一道javascript面试题(八)你真的知道了解const吗
|
6月前
|
前端开发 JavaScript 安全
【面试题】【ES6】let和const命令 (面试必看)
【面试题】【ES6】let和const命令 (面试必看)
|
Java
【Java面试】static关键字的意义以及应用场景
【Java面试】static关键字的意义以及应用场景
90 0
|
存储 程序员 编译器