C语言中你不知道的const和volatile

简介: C语言中你不知道的const和volatile

前言

本篇文章将带大家了解const和volatile,平时大家应该都比较少使用这两个变量修饰符,今天我给大家详细的介绍一下这两个修饰符的具体用法。


一、const

很多人都认为const修饰的变量叫常量,那什么叫常量?

常量就是不能够被修改的变量,下面就修改一下const修饰的变量。

#include <stdio.h>
int main(void)
{
  const int a = 5;
  printf("%d\n", a);
  int* p = &a;
  *p = 6;
  printf("%d\n", a);
  return 0;
}

运行结果:

image.png

看到这里大家可能都会觉得很奇怪了,不是说const修饰的变量叫常量吗?那为什么还可以进行修改呢,其实const修饰的变量不能够叫做常量。

const修饰变量的性质

1.const修饰的变量只是只读的,并不是说他就是一个常量,所以是可以进行修改的。

2.const在编译器有用,在程序执行时无用。

3.const修饰的变量并不是真正的常量,他只是说onst修饰的变量不能出现在左边。


二、volatile

volatile这个属性大部分人应该都是没有听过的,因为volatile是不常用的属性。

但是在嵌入式开发中volatile这个属性还是比较有用的。

volatile的作用:

1.volatile告诉编译器每次都去内存中取数据,假如没有volatile的修饰的话编译器会做一些你不想要的优化。

2.volatile你可以理解为是多变的意思,就是告诉编译器这个变量是很容易发生变化的不能随便的帮我去优化他。


总结

通过上面的这些大家应该对const和volatile有了一个新的了解了。


相关文章
|
11月前
|
缓存 NoSQL 编译器
C语言的本质(四):volatile限定符
C语言的本质(四):volatile限定符
69 0
|
11月前
|
存储 安全 编译器
『C语言进阶』const详解
『C语言进阶』const详解
|
4月前
|
缓存 安全 编译器
【C语言】volatile 关键字详解
`volatile` 关键字在 C 语言中用于防止编译器对某些变量进行优化,确保每次访问该变量时都直接从内存中读取最新的值。它主要用于处理硬件寄存器和多线程中的共享变量。然而,`volatile` 不保证操作的原子性和顺序,因此在多线程环境中,仍然需要适当的同步机制来确保线程安全。
175 2
|
4月前
|
安全 程序员 编译器
【C语言】const 关键字详解
`const`关键字在C语言中用于定义常量,提供只读的变量。这意味着一旦初始化,`const`变量的值不能再被修改。下面详细介绍`const`关键字的用法、作用以及其在不同上下文中的应用。
251 2
|
10月前
|
C语言
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
58 1
|
11月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(下)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
47 1
|
10月前
|
C语言
【C语言】:const的使用方法
【C语言】:const的使用方法
51 0
|
11月前
|
安全 编译器 C语言
C语言中的const关键字
C语言中的const关键字
104 2
|
11月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(中)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
49 0
|
11月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(上)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
46 0