您的位置:首页 > 财经 > 金融 > 系统开发过程中最关键的阶段是_长沙专业建网站_百度推广多少钱_龙岗网站推广

系统开发过程中最关键的阶段是_长沙专业建网站_百度推广多少钱_龙岗网站推广

2024/11/17 3:27:25 来源:https://blog.csdn.net/c565114/article/details/142372234  浏览:    关键词:系统开发过程中最关键的阶段是_长沙专业建网站_百度推广多少钱_龙岗网站推广
系统开发过程中最关键的阶段是_长沙专业建网站_百度推广多少钱_龙岗网站推广

1.什么是static关键字

static中文意思是静态的,是C/C++中常见的一个关键字。它一般用于修饰变量(局部变量/全局变量)和函数。

对于变量来说,static关键字用来控制变量的存储方式,作用范围和生命周期。

下面我们分别在C语言和C++中讨论static的用法。

2.static在C语言中的运用

2.1static修饰局部变量

2.1.1static修饰的变量只初始化一次

1.在函数中声明变量时,static修饰的变量只初始化一次。

2.static修饰局部变量时,会改变局部变量的存储位置(静态区),所以该局部变量的生命周期变长(在程序结束时才会销毁)。

原因:static修饰了局部变量x,fun函数每次调用完毕,x不销毁,再次调用fun时,x保持原有数值运行。

总结:static关键字修饰局部变量不改变作用域,但是延长生命周期(存在静态区),进程结束时才会销毁。

2.1.2static修饰局部变量默认初始化为0

和全局变量一样,static修饰局部变量默认初始化为0。

因为static修饰的局部变量存在静态区,全局变量也存在静态区,所以它们有一些相似的特性。

static修饰的局部变量和全局变量的区别:前者只是局部可见,后者全局可见。

2.2static修饰全局变量和函数

1.首先说一下全局变量的作用域非常广泛,只要在一个源文件中定义后,这个程序中的所有源文件、对象以及函数都可以调用,生命周期更是贯穿整个程序。文件中的全局变量想要被另一个文件使用时就需要进行外部声明(以下用extern关键字进行声明)。

2.static修饰全局变量和函数时,会改变全局变量和函数的链接属性-------变为只能在内部链接,从而使得全局变量的作用域变小。

总结:

1. 全局变量和函数本身是具有外部链接属性的,在test.cpp文件中定义的全局变量和函数,在main.cpp文件中可以通过【链接】来使用;

2. 但如果全局变量被static修饰,那这个外部链接属性就会被修改成内部链接属性,此时这个全局变量就只能在自己的源文件中使用;

3.static在C++中的运用

C++是兼容C的,所以C中的static在C++中依然适用。本小结主要介绍static在类中的用途。

类中被static修饰的成员分为两类:1.静态成员变量。2.静态成员函数。

注意:静态成员函数一定要在类外初始化。

重点概念:

1.静态成员为所有类对象所共享,不属于某个具体的实例。

2.静态成员变量必须在类外定义,定义时不添加static关键字。

3.静态成员函数没有隐含的this指针,不能访问任何非静态成员。

4.静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值。

示例一:

这个例子说明静态成员变量和函数为所有类对象所共享,不属于某个具体的实例。它们不参与类大小的计算。

示例二:

这个例子说明静态成员函数一定要在类外初始化。

示例三:

这个例子说明静态成员函数不可以访问非静态成员变量,因为它没有this指针。

3.1公有静态成员变量的访问方式

1.通过类对象.静态成员来访问。

2.通过类名::静态成员来访问。

3.通过匿名对象突破类域进行访问。

3.2私有静态成员变量的访问方式

1.通过类对象.静态成员函数来访问。

2.通过类名::静态成员函数来访问。

3.通过匿名对象调用静态成员函数来访问。

由此可见静态成员函数也是这三种访问方式,但是非静态成员函数不可以通过类名::静态成员函数来访问。

静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值。

3.3小问题

静态成员函数可以访问非静态成员函数嘛:

答:不可以,因为没有this指针。

非静态成员函数可以调用静态成员函数嘛:

答:可以,静态成员为所有类所共享,不受访问限制。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com