静态全局变量

注意:全局变量和全局静态变量的区别
1) 全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的, 作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。

2)全局静态变量是显式用static修饰的全局变量作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。

对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷 贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共 用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;

因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;

静态成员函数
与静态数据成员一样,我们也可以创建一个 静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。 静态成员函数与静态数据成员一样,都是类的内部 实现,属于类定义的一部分。普通的成员函数一般都隐含了一个this 指针,this指针指向类的对象本身,因为普通成员函数总是具体的属于某个类的具体对象的。通常情况下,this 是缺省的。如函数fn()实际上是this->fn()。但是与普通函数相比, 静态成员函数由于不是与任何的对象相联系,因此它不具有this指 针。从这个意义上讲,它无法访问属于类对象的非静态数据成员,也无法访问非 静态成员函数,它只能调用其余的静态成员函数。
指针,其实就是一种类型,用来存放内存地址的类型,他有基类型,比如 int*,其中int就是他的基类型,这就是一般的指针。而静态指针,是
static int *,一般的局部变量当生命周期结束时,它分配的内存会被系统释放,而静态变量不会被释放,也就是说,从它声明的开始到整个程序的结束都会存在。 所以静态指针和一般指针的区别外在表现是生命周期不一样,一般指针就是一般变量,而静态指针就是静态变量。 

至于楼上的解释是错误的,int *const p;这样生命的指针指定位置后不能再改变,不过这不是静态指针。是常指针。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值