c++关键字static的作用
1.隐藏
当同时编译多个源文件(.cpp)时,在某一个源文件中用static修饰的全局变量或函数,对其他源文件是隐藏的
//1.cpp
int a = ;
void fun()
{
cout << << endl;
}
static int b = ; //main.cpp
int main()
{
extern int a;
cout << a << endl; //输出:5 extern void fun();
fun(); //输出:666 extern int b;
cout << b << endl; //编译错误:b在1.cpp中是static的 return ;
}
2.static使局部变量也具有全局生存周期
1)静态全局变量,生存周期为整个程序,作用域为定义它的源文件内(隐藏)
2)静态局部变量,它的生存周期还是整个程序,但是作用域仅限于定义它的函数内,也就是说在其他函数中不能使用它
int fun()
{
static int a = ;//在第一次进入这个函数的时候,staticj局部变量a被初始化为10,这是a唯一的一次初始化
--a;
return a;
} int main()
{
cout << fun();
cout << endl;
cout << fun();
cout << a << endl;//错误:不能在其他地方使用静态局部变量a return ;
}
程序输出:
3.默认初始化变量为0
1)如果没有给static修饰的变量赋予初始值,则它将被默认初始化为0
2)全局变量也具备这一特性,某些时候这一特性可以减少程序员的工作量
4.c++中用static将类成员声明为静态成员
c++关键字static的作用的更多相关文章
- 为何关键字static在面试中频频被问?
关键字static的神奇妙用在今天的学习中,我了解到关键字static的作用,下面我来给大家分享一下.①static 修饰局部变量只改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束生 ...
- C/C++中关键字static的用法及作用
本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...
- static 关键字有什么作用
static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法.(注意:不能修饰 ...
- Java基础(basis)-----关键字final和static的作用
1.关键字final final修饰类:这个类就不能被继承 final修饰方法:不能被重写 final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值.习惯 ...
- Java中关键字static的使用与作用
1.static的意义 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和 ...
- java中关键字volatile的作用
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...
- IOS 本地推送 IOS10.0以上 static的作用 const的作用
//需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...
- 转!!java中关键字volatile的作用
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...
- Java开发笔记(五十五)关键字static的用法
前面介绍嵌套类的时候讲到了关键字static,用static修饰类,该类就变成了嵌套类.从嵌套类的用法可知,其它地方访问嵌套类之时,无需动态创建外层类的实例,直接创建嵌套类的实例就行.其实static ...
随机推荐
- Delphi: TMethod转普通方法为对象方法
回看旧时代码,以往清楚之记忆渐渐模糊,事隔多年,遗忘正在发生. TMethod方法,当初熟练再看已陌生,再做复习以作备忘. 简言之,它做为一相桥接,将普通事件或方法转换为类方法,其多用于事件动态设置中 ...
- c#: 判断Firefox是否安装
1.源起: KV项目需要给浏览器安装下载插件,就需要判断是否安装对应浏览器,发现判断卸载目录方法,32位程序在.net 2.0运行环境下,常规方法不能访问64位注册表位置,导致不能判断. 2.卸载键值 ...
- sudo和su的区别
su 命令 su su命令的主要作用是让你可以在已登录的会话中切换到另外一个用户.换句话说,这个工具可以让你在不登出当前用户的情况下登录为另外一个用户. su命令经常被用于切换到超级用户或 root ...
- python:在for遍历list时使用remove出现的问题以及解析(转)
原文地址:http://blog.csdn.net/circle2015/article/details/64444300最近面试时,面试官在纸上写了几行代码,说是很简单的问题,我看后直接懵逼...如 ...
- JFinal Web开发学习(二)目录、架构、package设计
package分类 config是JFinal的项目配置 controller是控制器 handler可以设置全局处理器,例如判断用户请求中是否直接请求 FreeMarker的模板文件ftl或者htm ...
- threejs指定对象旋转中心
指定对象旋转中心 默认情况下,对象的旋转中心都是自身的中心.对于组对象而言,也是如此.因此,可以利用这个特点,实现对象绕任何点旋转,也就是指定旋转中心.比如我们想要下图的对象绕A点旋转 我们可以添加 ...
- Vue 局部组件和全局组件的使用
<template> <div id="app"> <!--<img alt="Vue logo" src="./ ...
- Jenkins与Git持续集成&&Linux上远程部署Java项目
一.环境搭建 1.安装所需软件 Jdk Maven Jenkins Tomcat Xshell git 以上软件去官网下载,比较简单,不一一描述了 2.安装所需的jenkins插件 Git plugi ...
- PHP的网站主要攻击方式有哪些?
1.命令注入(Command Injection) 2.eval注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) 4.跨网站脚本攻击(Cross Site ...
- Atom打开txt文件中文乱码解决、指定文件的语法格式、win10中禁止睡眠
1.Atom中文乱码解决 首先保证打开的txt文件的编码格式为UTF-8无BOM编码格式,可以使用Notepad++更改,如下图所示: 然后再在atom中打开文件,并右键点击文件内容的任意位置,Cha ...