static变量与普通变量的区别
(1) 静态全局变量的定义:在全局变量前加一个static,使该变量只在这个源文件中可用。
(2)全局变量与全局静态变量的区别:
(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
(3)静态全局变量的作用:
(a)不必担心其它源文件使用相同变量名,彼此相互独立。
(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
例如:一个程序由两个源文件组成,其中在一个源文件中定义了“int n;”,在另一个源文件中定义了“static int n;”则程序给它们分别分配了不同的空间,两个值互不干扰。
例如:下面在file1.cpp中声明全局变量n,在file2.cpp中定义全局静态变量n。文件file1.cpp和file2.cpp单独编译都能通过,但连接时,file1.cpp中的变量n找不到定义,产生连接错误。
// file1.cpp
# include <iostream.h>
void fn()
extern int n;
void main()
{
n=20;
cout<<n<<endl;
fn();
}
// file2.cpp
# include <iostream.h>
static int n; // 默认初始化为0,注意此处定义的n 只能在file2.cpp中使用。
void fn()
{
n++;
cout<<n<<endl;
}
2、静态函数:使某个函数只在一个源文件中有效,不能被其他源文件所用。
定义:在函数前面加上static。
说明:函数的声明和定义默认情况下在整个程序中是extern的。
静态函数的效果:
(1)它允其他源文件建立并使用同名的函数,而不相互冲突。
(2) 声明为静态的函数不能被其他源文件所调用,因为它的名字不能得到。
static变量与普通变量的区别相关推荐
- static变量和普通变量的区别
static变量和普通变量的区别: static全局变量与普通全局变量区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量区别:static局部变量 ...
- static变量、static函数与普通变量、普通函数的区别
转自:http://blog.163.com/sunshine_linting/blog/static/44893323201191294825184/ 全局变量(外部变量)的说明之前再冠以stati ...
- 堆栈,静态变量和普通变量,静态函数和普通函数的区别
首先简单介绍一下堆和栈的区别. 1.内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1).栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似 ...
- 变量声明和定义的区别
转自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候 ...
- java静态变量和实例变量的区别6_java静态变量的与实例变量的区别
下面的为代码实现 /** * */ package com.b510.test; /** * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象, * 其中的实例变量才会被分配空间,才 ...
- 静态变量与实例变量的区别
静态变量也叫类变量,这种变量前加了static修饰符.可以直接用类名调用,也可以用对象调用,而且所有对象的同一个类变量 都是共享同一块内存空间. 实例变量也叫对象变量,这种变量没有加static修饰符 ...
- volatile变量与普通变量的区别
我们通常会用volatile实现一些需要线程安全的代码(也有很多人不敢用,因为不了解),但事实上volatile本身并不是线程安全的,相对于synchoronized,它有更多的使用局限性,只能限制在 ...
- 1.16 static关键字(静态变量和静态方法)
在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有. 静态成员不依赖于类的特定实例,被 ...
- 全局变量、成员变量、类变量、静态变量、实例变量、局部变量的定义与区别
全局变量 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量).实例变量两种. 通过代码来看一下: private int i;//实例变量 private ...
最新文章
- C语言 IP地址合法性判断 去除字符串首尾空格
- 责任心,内因还是外因?
- 阅读分析下列html,阅读下列说明和 HTML 文本,分析其中嵌入的 JavaScript. 脚本..._考试资料网...
- html加入购物车的动画,vue实现加入购物车动画
- 1-4flink概述
- 双对数坐标系matlab绘图,EXCEL自动计算液塑限并绘制图表至双对数坐标系.doc
- JDBC系列 之 JDBC层次结构和基本构成
- ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
- Linux 内核进程管理之进程ID【转】
- 【matplotlib笔记】sin图像与cos图像
- 使用HandBrake的视频压制及投稿教程
- 一份走心的iOS开发规范
- 面试经验总结——测试岗
- 明解C语言 【日】 柴田望洋 第十章 指针 代码清单和练习代码
- Spring微服务实战第2章 使用Spring Boot构建微服务
- suricata的netmap抓包模式安装
- 介绍理想工作计算机 英语作文,理想工作的英语作文7篇
- VBA 类模块理解和使用总结
- opencv回顾之Core module
- 0R电阻和1R电阻的用处
热门文章
- 2021-08-06随记(vertical-align, 顶线、底线、中线、基线,vue原理理解)
- php接入外汇购物,兑换难!这些外币最好别带回国
- 正则表达式-匹配中英文、字母和数字
- java字面量和符号引用
- Android 11 Audio框架探索之AudioTracK(二)
- 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例
- CAD三维图形转化成二维图形的过程具体的步骤
- 电子原理 半波整流与桥式整流Protues仿真电路
- linux设置合上电脑,[转载]笔记本上装CentOS 7 设置合上盖子不休眠
- 一致性 hash 算法 — CARP 2020/5/11 19:38