关于“php_static变量”的问题,小编就整理了【5】个相关介绍“php_static变量”的解答:
static变量存在什么区?内存到底分几个区?
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。
5、程序代码区—存放函数体的二进制代码。
静态变量static的作用是什么?作用:有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。
下边简单介绍一下:
static关键字在C语言中用于声明一个静态的局部变量。
这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,因此若非必要,不要多用静态局部变量。
希望我的回答对你有所帮助。
被static修饰的成员变量叫什么?
当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例对象共用同一个static变量。这也就是说不管创建多少对象,static修饰的变量只占有一块内存。
静态成员变量:
声明为static关键词修饰的变量叫做静态成员变量,也叫全局变量。
静态成员变量的访问方式:
(1)直接通过类名调用类的静态成员变量:
(2)通过对象名调用类的静态成员变量:
static变量会被继承吗?不能继承
在类定义中,它的成员(包括数据成员和 成员函数)可以用关键字static声明为静 态的,这些成员称为静态成员
静态成员的特性:
• 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的
对象共享
静态成员包括:
• 静态数据成员
• 静态成员函数
在一个类中,若将一个数据成员声明为 static,这种成员称为静态数据成员。
(静态数据成员在类内声明,在类外定 义)
与一般的数据成员不同,无论建立了多 少个对象,都只有一个静态数据的拷贝
可以认为该静态数据是属于该类的,而 不是具体的属于某一个对象
static修饰的变量放在内存哪里的?static 修饰的静态变量存放在内存的数据区;也就是静态变量存放在——数据区。
栈中保存基本数据类型的变量和自定义的对象的引用(不是对象),对象本身都存放在堆区中,被执行的方法的也是pull到栈中,当方法执行完后再push出栈。
到此,以上就是小编对于“php_static变量”的问题就介绍到这了,希望介绍关于“php_static变量”的【5】点解答对大家有用。