首页 > 其他分享 >auto,static,const,extern,volatile,register

auto,static,const,extern,volatile,register

时间:2024-07-16 20:29:50浏览次数:13  
标签:const 变量 auto register volatile 寄存器 修饰

auto关键字用于声明变量的生存期为自动,auto修饰的是自动类型的变量,对于局部变量默认就是自动类型的变量,如果没有赋初值它的值就是随机值。

static  修饰的变量或者函数有如下特点:

  1. static修饰的局部变量,可以延长变量的生命周期(不会被多次初始化)
  2. static修饰的全局变量或者函数只能在本文件中使用(私有privacy)

const(const修饰的全局变量在.ro段存储,const修饰的局部变量在栈区存储。)

        被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

extern

        extern修饰的变量或者函数没有在当前没有中,而是在其他文件中。

volatile

        作用是每次都从内存中获取最新的值,不从缓存中取值。

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:

1). 并行设备的硬件寄存器(如:状态寄存器);

2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);

3). 多线程应用中被几个任务共享的变量;

register

       register修饰的变量是寄存器类型的变量,如果不加register修饰变量是在内存上存储的。

加了register变量就在寄存器中存储,寄存器类型的变量在运算的时候比内存上的变量运

算的效率更高。在一个处理器上寄存器的个数是有限制的一般40个左右。寄存器类型的变量

不能取地址,因为它没有在内存中存储。

问题:

一个参数既可以是const还可以是volatile吗?解释为什么。

         是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。

一个指针可以是volatile 吗?解释为什么。

        是的。因为指针和普通变量一样,有事也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个buffer的指针时,必须用volatile来修饰指针。

标签:const,变量,auto,register,volatile,寄存器,修饰
From: https://blog.csdn.net/weixin_62298792/article/details/140475246

相关文章

  • Autobots应用探索:实践中的思考与发现
    背景背景1:作为一名测试,日常工作中必不可少的几个环节是查看需求文档、编写测试用例、处理线上问题、能力提升等,基于集团的https://xxx.jd.com/工具能一次性帮我们把这些事情都做了;背景2:作为XXX共建项目的成员之一同时也是第一批用户,我用它做了几个测试实践,和大佬们一起探讨交......
  • buying a SIM card and registering a mobile phone number
    Here’sasampleconversationaboutbuyingaSIMcardandregisteringamobilephonenumber:User:Hi,IneedtobuyaSIMcardandregisteramobilephonenumber.Canyouguidemethroughtheprocess?Salesperson:Ofcourse!First,weneedtochooseamo......
  • Auto-GPT Command evaluate_code returned: Error: The model: `gpt-4` does not exis
    题意:Auto-GPT命令evaluate_code返回:错误:模型 gpt-4 不存在。问题背景:I'mworkingwith auto-gpt andIgotthiserror:Commandevaluate_codereturned:Error:Themodel:`gpt-4`doesnotexistandit'slikeitcan'tgofurthermore.whatshouldIdo?......
  • APIAuto技术详解:从基础到高级使用
    文章目录引言原理概述基础使用安装与启动基本功能例子:测试一个简单的GET请求高级使用自动化测试随机参数测试数据采集与免费数据调用例子:调用免费天气API优缺点优点缺点官网链接结论引言随着互联网技术的飞速发展,API(应用程序编程接口)已成为连接不同系统和应用的......
  • autolab搭建教程
    主要照着官方文档配置:https://docs.docker.com/compose/install/linux/#install-using-the-repository这里主要讲一些坑点。SSL官方教程:https://docs.autolabproject.com/installation/docker-compose/#configuring-tlsssl(notworking)autolab自带的证书申请机制sudo./ssl......
  • Nessus Professional 10.7 Auto Installer for macOS Sonoma (updated Jul 2024)
    NessusProfessional10.7AutoInstallerformacOSSonoma(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-macos/,查看最新版。原创作品,转载请保留出处。Ness......
  • Nessus Professional 10.7 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9 (up
    NessusProfessional10.7AutoInstallerforRHEL9/AlmaLinux9/RockyLinux9(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-rhel-9/,查看最新版。原创作品,......
  • Auto run after booting up OS
    ToexecuteascriptautomaticallyafterbootinguptoUbuntuOS,youcanplacethescriptinthe/etc/rc.localfileorcreateasystemdservice.Here'showtodoitusingbothmethods:Method1:Using/etc/rc.localOpenthe/etc/rc.localfilewithr......
  • auto关键字
    作用:能自动推断出是什么数据类型代码示例:autoname()//能判断出返回值时字符串类returnstd::string("hhh");弊端:对变量类型不明确,可能会破坏依赖特定类型的代码比如字符串类的.strlen()什么时候用:当类型过长时intmain(){std::vector<std::string>strings;strin......
  • Solution - Codeforces 1311E Construct the Binary Tree
    先去考虑找一下无解条件。首先就是有\(d\)关于\(n\)的下界\(L\),就是弄成一颗完全二叉树的答案。其次有\(d\)关于\(n\)的上界\(R\),就是成一条链的样子。首先当\(d<L\)或\(R<d\)时显然无解。对于\(L\led\leR\)又如何去判定。能发现没有一个比较好的判定......