【C/C++】static和const的比较和解释
转
载自http://www.builder.com.cn/
static
是c++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static
修饰符的实质。
static 的两大作用:
一、控制存储方式:
static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。
1、引出原
因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生
了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现?
最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺
点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。
2、 解决方案:因此c++
中引入了static,用它来修饰变量,它能够指示编译器将此变量在程序的静态存储区分配空间保存,这样即实现了目的,又使得此变量的存取范围不变。
二、控制可见
性与连接类型 :
static还有一个作用,它会把变量的可见范围限制在编译单元中,使它成为一个内部连接,这时,它的反义词为”extern”.
static
作用分析总结:static总是使得变量或对象的存储形式变成静态存储,连接方式变成内部连接,对于局部变量(已经是内部连接了),它仅改变其存储方式;
对于全局变量(已经是静态存储了),它仅改变其连接类型。
类中的static成员:
一、出现原因及作用:
1、需要在一个
类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务。
2、同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。
类的
static成员满足了上述的要求,因为它具有如下特征:有独立的存储区,属于整个类。
二、注意:
1、对于静态的
数据成员,连接器会保证它拥有一个单一的外部定义。静态数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。
消除时的顺序是初始化的反顺序。
2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成
员函数。
const
是c++中常用的类型修饰符,但我在工作中发现,许多人使用它仅仅是想当然尔,这样,有时也会用对,�
相关文档:
一、程序真谛
1.程序就是“搬数”
动作:读取——技术——写出(输入——处理——输出)
数据结构决定数据如何组织,搬动起来效率较高
算法语言� ......
这段源码能在linux下运行!!! 能识别小数
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
/*#define NULL 0*/
/* 自定义变量 */
#define&n ......
要想用eclipse开发C/C++ 首先要配置一个C/C++的编译环境,因为eclipse自身是不带的。 需要下面这两个必不可少的工具 1.编译工具 MinGW:http://www.mingw.org/ 直接下载地址:http://sourceforge.net/projects/mingw/files/ 2.eclipse插件 CDT � ......
文章来自:http://mayer.vokaa.com/archives/16
对于一个前端工作者,都知道符合W3C规范对于网页的跨浏览器工作带来好处,并能使网页在不同的浏览器之间互相兼容。
在这里我们一一列举互联网上所提供的解决办法及一些我个人的建议及实践案例。
其实,现在多数人都会使用Hack的方法解决,但如果DIV和CSS的结构清晰、合理� ......