基础的语法知识(static关键字)
1.C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别
局部变量(Local variables)与 全局变量:
在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序或代码块。
当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
全局变量在程序开始运行期间就已经在内存中开辟了内存空间,直到程序结束才会释放这块内存空间。
int nData = 10; // 这是一个全局变量
int main()
{
int i = 0; // 这是一个局部变量,这个变量只在main函数中有效。
int nData = 100; // 这也是一个局部变量,但是这个局部变量与全局变量重名了
cout << nData << endl;
return 0;
}
局部静态变量:
局部static变量与全局变量一样,在程序开始运行期间就已经在内存中开辟了空间,直到程序结束才会释放这块内存空间。
一个局部static变量只定义/初始化一次,后序都不再定义或初始化。
局部static变量只能在定义的子程序或代码块中访问,不能在外部访问,所以叫局部静态变量。
全局静态变量:
全局static变量与局部static变量一样,在程序开始运行期间就分配了内存地址。
局部static变量只能在定义的代码块中被访问,而全局static变量只能在定义的文件中被访问。不能跨文件访问。
--------
静态数据成员:独立于该类的任意对象而存在,是与类关联的对象,并不与该类的对象关联。static数据成员(const static数据成员除外)必须在类定义体的外部定义。
静态成员函数:static成员函数没有this形参,可以直接访问所属类的static成员,不能直接使用非static成员。static成员函数不能被声明为虚函数。
----------
static成员变量定义放在cpp文件中,不能放在初始化列表中。const static成员可就地初始化。
----------------
如何引用已经定义过的全局变量:引用头文件或者是使用extern关键字(如果写错则报错的方式不同);
static关键字的作用:使变量或者对象的存储形式变为静态存储,连接方式变成内部连接,对于局部变量(已经是内部连接了),只改变存储方式,对于全局变量(已经是静态存储),只改变连接类型。
因此,在源程序包括多个源文件时,全局变量可以在整个程序中有效,而静态全局变量只能在当前被定义的源文件中有效,限制了作用域。
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
----------------------------------------------------------------------
基础的语法知识(static关键字)的更多相关文章
- Java基础语法 - 面向对象 - static 关键字
使用static关键字修饰的变量.常量和方法分别被称作静态变量.静态常量和静态方法,也被称作类的静态成员 静态变量 使用static修饰过的类变量称为静态变量 该变量需要使用类名.变量名进行调用,不能 ...
- Objective-C 语法之 static 关键字
转:http://www.apkbus.com/android-593-1.html 学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其 ...
- [ 转载 ] Java基础4--Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- 夯实Java基础(七)——Static关键字
1.static介绍 static关键字一直是各大企业中面试常常会问到的问题,主要考察面试者的基础是否扎实,下面来介绍一下static关键字. Java中static表示“全局”或者“静态”的意思,可 ...
- C++语言基础(5)-this和static关键字
一.this关键字 this是一个指针,可用其访问成员变量或成员函数 下面是使用this的一个完整示例: #include <iostream> using namespace std; ...
- Java基础之final、static关键字
一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的 ...
- Java基础之final和static关键字
一.final 根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. ...
- JAVA基础(一) ——— static 关键字
1. 静态代码块 保证只创建一次,提升属性的级别为类变量.初始化后独自占用一块内存 2. 静态代码块执行触发条件 (1).当创建这个类的实例 (2).当调用这个类的静态变量 (3).当调用这个类的 ...
- java基础语法——方法,static关键字
一:方法: 1.什么是方法: 通俗地讲,方法就是行为.它是完成特定功能的代码块能执行一个功能.它包含于类和对象中. 2.为什么要有方法: *提高代码的复用性. *提高效率 *利于程序维护 3.命名规则 ...
随机推荐
- C# 类反射创建对象实例
object obj= Activator.CreateInstance(Type type);
- 算法训练 Bus Tour
问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...
- 【题解】SDOI2009Bill的挑战
这题好像状压的做法比较的无脑?但想记录一下容斥的做法,感觉自己对于容斥简直一无所知.这道题目容斥的解法我也是看了题解才会的.如有雷同,是我看的(*/ω\*)我们可以首先枚举当前字符串与给定的哪 \(k ...
- Spark2.1.0之初识Spark
随着近十年互联网的迅猛发展,越来越多的人融入了互联网——利用搜索引擎查询词条或问题:社交圈子从现实搬到了Facebook.Twitter.微信等社交平台上:女孩子们现在少了逛街,多了在各大电商平台上的 ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
- BZOJ3932:[CQOI2015]任务查询系统——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3932 题面源于洛谷 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成 ...
- ContestHunter暑假欢乐赛 SRM 03
你们也没人提醒我有atcoderQAQ... A题曼哈顿距离=欧拉距离就是在同一行或者同一列,记录下i,j出现过的次数,减去就行,直接map过. B题一开始拿衣服了,一直以为排序和不排序答案是一个样的 ...
- Eclipse NDK 打印LOG信息(都在jni目录下操作)
http://blog.csdn.net/u013045971/article/details/46448975 1 在.c文件中,引用头文件,定义TAG.LOG宏: #include <and ...
- To pack or not to pack – MyISAM Key compression
MyISAM storage engine has key compression which makes its indexes much smaller, allowing better fit ...
- MQ对比
转:http://blog.csdn.net/linsongbin1/article/details/47781187 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq. ...