对extern,static,const的再认识

2023-10-30

const

  1. const修饰的值为常量,是不可改变的,在c++语言中是不可改变的,而在C语言中,我们可以通过指针去修改那一片地址的值
  2. const修饰的指针,表面指针指向或者指针的值是不可被修改的,我们可以通过通配符*的位置来判断,*在左说明修饰的值不可改变,*在右说明指针的指向不能改变
  3. const修饰函数的参数,表面传入的参数在函数内部不可改变
  4. const修饰类成员变量,该成员变量只能在初始化列表赋值,而不能在外面改变
  5. const修饰类成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”

    不能调用非const成员函数,因为任何非const成员函数会有修改成员变量的企图
    const的成员函数才能被一个const类对象调用。即const类对象只能调用const成员函数
    const关键字不能与static关键字同时使用,因为static关键字修饰静态成员函数,静态成员函数不含有this指针,即不能实例化,const成员函数必须具体到某一实例
    const修饰类对象
    对象的任何成员都不能被修改
    只能调用const成员函数
    const的返回值同样应该使用一个const去接收

static (对文件的隐藏)

  1. static函数修饰普通变量,会将它放入常量区,随着程序的消亡而消亡
  2. static修饰局部变量,他并不会随局部模块的消亡而消失,而实保留着常量区,当模块下一次被调用的时候,还保留原理的值
  3. static修饰全局变量,static修饰的全局变量只有当前文件可以用
  4. static修饰函数,函数只能在本文件可以用,所以我们有时候想去调用静态函数,可以通过写接口函数的方式去调用他

extern

他的方法和函数一样,因为函数默认是extern修饰的,总结他的用法就是

可以多次声明,但是只能定义一次

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对extern,static,const的再认识 的相关文章

  • 在定义中使用 static 关键字与在 C 中使用声明

    以下编译良好 使用static仅在函数声明期间 include
  • 仅检索 Java 类中声明的静态字段

    我有以下课程 public class Test public static int a 0 public int b 1 是否可以使用反射来仅获取静态字段的列表 我知道我可以获得所有字段的数组Test class getDeclaredF
  • C++中静态的含义

    我以为我对 C 相当擅长 但事实证明我不是 我之前问过的一个问题 C const 左值引用 https stackoverflow com questions 4141278 c const lvalue references在答案之一中有
  • 如何编译Freetype(2)和Harfbuzz(使用Visual Studio)以使它们协同工作?

    我找到了关于编译与 Harfbuzz 相关的 Freetype 的已知问题的良好文档 http www gregwessels com dev 2017 05 02 freetype harfbuzz html http www gregw
  • Java和继承的静态成员[重复]

    这个问题在这里已经有答案了 假设我有以下课程 class Parent private int ID private static int curID 0 Parent ID curID curID 以及这两个子类 class Sub1 e
  • 非静态方法 next() 不能从静态上下文中引用

    我正在尝试解析一个mm dd yyyy将日期格式化为单独的字段 但是当我尝试编译时出现以下错误 非静态方法 next 不能从静态上下文中引用 什么可能导致错误 import java util Scanner public class Pr
  • C 和 C++ 中关键字 static 的含义有何不同? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道c中的关键字有两种用法 修改变量 修改全局变量 这种用法限制了全局变量范围从定义点到文件末尾的范围 修改局部变量 这种用法限制了
  • 为什么 C# 运算符重载必须是静态的?

    为什么 C 要求运算符重载是静态方法而不是成员函数 如 C 也许更具体地说 这个决定的设计动机是什么 埃里克 利珀特 Eric Lippert 在一篇文章中对此进行了极其详细的回答 博客文章 https ericlippert com 20
  • Java中静态字段的确切含义是什么?

    我想在同一类对象的各个实例之间共享一个对象 从概念上讲 当我的程序运行时 A 类的所有对象都访问 B 类的同一个对象 我见过那个static是系统范围的 并且不鼓励使用它 这是否意味着如果我有另一个程序在实例化 A 类对象的同一个 JVM
  • 在 Android Studio 中丢失对静态数据的引用

    当我的应用程序进入后台时 我遇到静态数据实例丢失的问题 从而导致空指针异常错误 静态数据非常依赖于上下文或 状态 并且通常不能在初始化时生成 为了确保我保留这些数据 我是否会被迫将数据写入存储 或者是否有其他方法来确保我的静态数据在应用程序
  • C++ 使用内部类指针类型定义模板类的静态成员

    我有一个像这里一样的模板类 在标头中 其中包含一个内部类和一个指向内部类的类型指针的静态成员 template
  • C# - 静态类型不能用作类型参数

    我有一个通用类可以帮助我检查参数值 internal sealed class Argument
  • 在Java 8中以静态方式获取类名[重复]

    这个问题在这里已经有答案了 这是后续更一般和类似的问题 答案 https stackoverflow com questions 1696551 how to get the name of the calling class in jav
  • 声明普通类和类模板的静态数据成员

    我读到在源文件中定义静态数据成员的原因是因为如果它们位于头文件中并且多个源文件包含头文件 定义将多次输出 我可以理解为什么这对于静态常量数据成员来说是一个问题 但是为什么这对于静态数据成员来说是一个问题呢 我不太确定我完全理解如果定义写在头
  • 使用 ruby​​ on Rails 向静态网站添加功能

    我是 ruby on Rails 的新手 我有一个包含很多静态页面的网站 我想向网站添加一些动态页面 我将在 ruby on Rails 中开发这些页面 当用户单击静态页面之一上的按钮之一时 将触发这些页面提供的功能 我想我将把动态页面放在
  • 在 PHP 中将静态方法作为参数传递

    在 PHP 中是否可以做这样的事情 myFunction MyClass staticMethod 这样 myFunction 将拥有对静态方法的引用并能够调用它 当我尝试它时 我收到 未定义的类常量 PHP 5 3 的错误 所以我想这不是
  • 在类中初始化 static struct tm

    我想使用 tm 结构作为类中的静态变量 花了一整天的时间阅读和尝试 但它仍然无法工作 如果有人能指出我做错了什么 我将不胜感激 在我的课堂上 在公共下 我将其声明为 static struct tm dataTime 在main cpp中
  • 在 Objective-c 问题中访问委托静态方法

    我在 Objective c 中遇到了一个奇怪的问题 这是代码 STViewController h import
  • extern 在 C# 中如何工作?

    每当我足够深入地观察反射镜时 我都会碰到extern没有来源的方法 我阅读了 msdn 文档http msdn microsoft com en us library e59b22c5 v vs 80 aspx http msdn micr
  • 静态、非成员或静态非成员函数?

    每当我有一些 实用 方向的功能时 我最终都会想知道哪个选项是最好的 例如 在我正在工作的上下文中打印消息结构 自己的或外部的 一些编码 解码代码或一些有用的转换函数 我想到的选项是 1 辅助类 结构中的静态函数 struct helper

随机推荐

  • QT中ui文件生成关联的C++类

    在VS2008中给对话框资源添加关联的C 类时 可通过右键菜单 添加类 直接添加关联的C 类 但QT中不支持这样的操作 在QT中在创建界面ui时 可手动也可自动创建ui文件关联的C 类 分别如下所示 一 自动创建ui文件和对应的C 类 项目
  • C语言开发网站

    在正式开发之前 先了解一下网站的原理 请求 处理 响应 在浏览器的network中可以看到浏览器和服务器的交互过程 请求一个网站的本质就是咱们的浏览器和服务器交互的一个过程 比如说咱们请求www baidu com 就是咱们的浏览器向服务器
  • lede 插件_路由器帮你签到!「LEDE/Openwrt系统“签到狗”插件使用教程」

    每日签到 废话不多说 用了才知道 图标 支持的站点 baidu 百度贴吧 百度文库v2ex V2EXhostloc hostloc comacfun A站bilibili B站163music 网易云音乐PCmiui 小米论坛52pojie
  • getline函数

    在我的印象中 getline函数经常出现在自己的视野里 模糊地记得它经常用来读取字符串 但是又对它的参数不是很了解 今天又用到了getline函数 现在来细细地总结一下 首先要明白设计getline函数的目的 其实很简单 就是从流中读取字符
  • 超强大JS表格:DataViewsJS 1.8.16.1407 Crack

    DataViewsJS完整的 JavaScript 数据呈现和数据网格平台 通过从各种不同的演示视图中进行选择 包括树 卡片 砖石 网格 时间线 甘特图 日历和网格 超越传统的表格显示 快速地 纯 JavaScript 针对速度进行了优化
  • ECMAScript 6规范总结(长文慎入)

    闲话 学习ES6的动机起于对其promise标准的好奇 它与jQuery源码中Deferred不同 而且在异步编程中加入了Generator 在后续ES7中更有Async 这勾起我强烈的兴趣了解ES6更多的内容 于是完整的学习了阮一峰老师的
  • Java Web实战开发基础:MVC模式

    Java Web的MVC模式 MVC是java web的基础 我写的java web实战开发专栏系列都是基于MVC 建议有需要的订阅我专栏的铁铁先提前看看这篇博文哦 简介 Java Web开发中 采用MVC Model View Contr
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 进程间同步(互斥量、信号量)

    进程间同步可以使用互斥量mutex 互斥锁 信号量和文件锁 进程间同步使用信号量 int sem init sem t sem int pshared unsigned int value 用于进程间同步此时第二个参数不能取0了 取非0值用
  • stm32中can通讯的基本概念

    身为一个电控组的成员 我们当接触一个新的概念的时候首先应该去了解他的硬件 其次再者是软件 而且在学习新的应用时 也应该清楚什么我们要着重了解 什么我们要清楚即可 以can为例 我们先从他的硬件说起 Can硬件一共有两种接法 但核心还是两根信
  • Tomcat服务器的HTTP首部长度最大值

    今天编写Cas5 OAuth2 0 实现password 授权功能时 Tomcat 提示如下信息 HTTP 头部长度超出默认长度 解决方法 配置文件路径 TOMCAT HOME conf server xml 修改如下 添加头部最大值 81
  • 1一个HTTP请求的网络脉络,解压爽文

    一个HTTP请求的网络脉络 解压爽文 1写前的话 2 网络请求概览 2 1 http 的产生 2 1 1什么叫做协议 2 1 2http定义 2 1 3 http诞生历史 怎么来的 时间迭代史 2 1 4浏览器的小插曲 2 2tcp ip协
  • 开发者入门必读:最值得看的十大机器学习公开课

    转 http www leiphone com news 201701 0milWCyQO4ZbBvuW html 导语 入门机器学习不知道从哪着手 看这篇就够了 在当下的机器学习热潮 人才匮乏十分显著 截至目前 国内开设人工智能 AI 专
  • R语言时间序列之ARMA、ARIMA模型

    基本理论知识 ARMA模型称为自回归移动平均模型 是时间序列里常用的模型之一 ARMA模型是对不含季节变动的平稳序列进行建模 它将序列值表示为过去值和过去扰动项的加权和 模型形式如下 yt c a1yt 1 a2yt 2 apyt p t
  • 【图像识别】基于卷积神经网络CNN和支持向量机SVM实现花卉图像识别附matlab代码...

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 针对传统图像分类算法在泛化能力等方面存在的不足 结合当前的深度学习算法 提出一种基于
  • 显示器尺寸对照表_怎样知道自己的电脑显示器是多少寸的

    展开全部 直接测量显示器e5a48de588b662616964757a686964616f31333366303731对角线即可 不包括边框 测量结果除以2 45得数就是显示器尺寸 显示器 display 通常也被称为监视器 显示器是属于
  • 20个基于DPDK开源项目,建议收藏

    一 ANS DPDK 原生加速网络堆栈 ANS 加速网络堆栈 是DPDK本地TCP IP堆栈 也参考FreeBSD实现 ANS提供了一个与Intel DPDK一起使用的用户空间TCP IP堆栈 文件结构 ans 加速网络堆栈过程 librt
  • FireFly菜鸟学习二(cocos2dx客户端和服务器通信实现)

    1 FireFly服务器 FireFly自定义通信协议 coding utf8 from firefly server globalobject import netserviceHandle from firefly server glo
  • kali安装SRC挖掘利器—ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统安装教程

    目录 先参考kali安装Docker 卸载旧版本 配置Docker以在启动时启动 Linux的安装后步骤 Docker 启动 文章参考地址 https www 77169 net download 267781 html 本地搭建 Kali
  • 对extern,static,const的再认识

    const const修饰的值为常量 是不可改变的 在c 语言中是不可改变的 而在C语言中 我们可以通过指针去修改那一片地址的值 const修饰的指针 表面指针指向或者指针的值是不可被修改的 我们可以通过通配符 的位置来判断 在左说明修饰的