c语言中的静态

1.修改变量

变量分为局部变量和全局变量,但它们都存储在内存的静态区域。静态全局变量的作用域仅限于定义该变量的文件,其他文件即使使用extern也不能使用。准确地说,范围从定义的开头开始,到文件的结尾结束。在它之前定义的代码行也不能使用。

静态局部变量,在函数体中定义,只能在本函数中使用,同一文档中的其他函数不能使用。因为static修改的变量总是存在于内存的静态区域,所以即使函数结束,这个静态变量的值也不会被破坏,函数下次仍然可以使用这个值。

2.修饰功能

在函数前添加static使其成为静态函数。不过这里的“静态”的意思并不是指存储方式,而是指函数的作用范围仅限于这个文件(所以也叫内部函数)。使用内部函数的好处是,不同的人写不同的函数时,不用担心自己定义的函数是否会和其他文件中的函数同名。

关键字static有一段不寻常的历史。起初,关键字static是在C中引入的,用来表示在退出块后仍然存在的局部变量。随后,static在C中有了第二层含义:用来表示其他文件无法访问的全局变量和函数。为了避免引入新的关键字,仍然使用静态关键字来表达这第二层含义。

C语言中使用的静态是什么? 有两种用途:

1.static修改局部变量,成为局部静态变量。

与普通局部变量相比,静态修改局部变量有以下优点:

①静态局部变量的作用域和连接性质与普通局部变量相同;

②存储类:静态局部变量分布在data/bss段,普通局部变量在栈上;

③生命周期:由于存储类的不同,静态局部变量的生命周期一直延长到程序结束。

2.static将全局变量和函数修改为静态全局变量和静态函数。

与普通全局变量\普通函数相比,静态修改的全局变量\函数有以下优点:

①存储类别、生命周期、范围相同;

②不同的是,static修饰全局变量\函数连接属性是内连接,普通全局变量\普通函数是外连接;

(3)也就是说static修改全局变量\和函数不能跨文件访问和调用。

扩展数据:

在类中的数据成员声明之前添加static关键字,该数据成员是类中的静态数据成员。其特点如下:

静态数据成员存储在全局数据区。静态数据成员在定义时分配存储空间,因此不能在类声明中定义。

静态数据成员是类的成员。无论定义了多少个该类的对象,都只有一个静态数据成员的副本,它对该类的所有对象都是可见的。也就是说,任何对象都可以对静态数据成员进行操作。对于非静态数据成员,每个对象都有自己的副本。

基于以上原因,静态数据成员不属于任何对象,当没有类的实例时,它们的作用域是可见的,当没有对象时,它们可以被操作。

像普通的数据成员一样,静态数据成员也遵循公共的、受保护的、私有的访问规则。

静态数据成员的初始化格式:数据类型类名::静态数据成员名=值

有两种方法可以访问类的静态数据成员:类对象名、静态数据成员名或类类型名::静态数据成员名。

C语言中static的功能和用法 static关键字不仅可以用来修饰变量,也可以用来修饰函数。当用static关键字修改一个变量时,我们称之为静态变量。静态变量的存储方式与全局变量相同。静态变量属于静态存储模式,但属于静态存储模式的变量不一定是静态变量。

在C语言中,static关键字的作用如下:

修改变量时,静态修改的静态局部变量只执行一次,局部变量的生命周期延长到程序运行。

当static修改一个全局变量时,这个全局变量只能在这个文件中访问,不能在其他文件中访问,即使它是由extern在外部声明的。

静态修改一个函数,那么这个函数只能在这个文件中调用,不能被其他文件调用。静态修改的局部变量存储在全局数据区的静态变量区。

c语言的静态用法:

面向过程编程中的静态,面向对象编程中的静态。前者适用于普通变量和函数,不涉及类;后者主要说明静态在类中的作用。

在类中,static可以用来修饰静态数据成员和静态成员方法。

静态数据成员:

静态数据成员可以在多个对象之间共享数据。它是一个类的所有对象的共享成员,它只占用内存中的一个空间。如果它的值改变,每个对象中该数据成员的值也将改变。

静态数据成员在程序开始运行时被分配空间,直到程序结束才被释放。只要在类中指定了静态数据成员,即使没有定义对象,也会为静态数据成员分配空间。

静态数据成员可以被对象名和类名引用。

静态成员函数:

静态成员函数和静态数据成员一样,属于类的静态成员,而不是对象成员。

非静态成员函数有这个指针,而静态成员函数没有这个指针。

静态成员函数主要用于定位静态数据成员,不能访问非静态成员。

相关文章

发表新评论