static做用

      存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是惟一的一次初始化。共有兩種變量存儲在靜態存儲區:全局變量和static變量。函數

 

0x01  (普通)全局變量與靜態全局變量 (隱藏)this

      未加static前綴的全局變量和函數都具備全局可見性,其它的源文件也能訪問全局變量名或者函數名前加static,就會對其它源文件隱藏。利用這一特性能夠在不一樣的文件中定義同名函數和同名變量,而沒必要擔憂命名衝突spa

      static全局變量只初始化一次,防止在其餘文件中被引用。指針

 

 

0x02   (普通)局部變量與靜態局部變量對象

      局部變量改成靜態變量後是改變了它的存儲方式(惟一的一次初始化),即改變了它的生存週期。blog

      做爲static局部變量在函數內定義,它的生存期爲整個源程序,可是其做用域仍與自動變量相同,只能在定義該變量的函數內使用該變量。退出該函數後, 儘管該變量還繼續存在,但不能使用它。作用域

// StaticDemo.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include <stdio.h>

int Function();
int main(void)
{
	for (int i = 0; i <= 10; ++i)
		printf("%d\n",Function());
	return 0;
}

int Function() {
	static int StaticNumberUnitOnlyOnce = 666;      //  存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是惟一的一次初始化。
	return StaticNumberUnitOnlyOnce--;              //在static出現前,要達到一樣的功能,則只能使用全局變量: 
}

  

0x03  (普通)函數和靜態函數it

    未加static前綴的全局變量和函數都具備全局可見性,其它的源文件也能訪問,全局變量名或者函數名前加static,就會對其它源文件隱藏。利用這一特性能夠在不一樣的文件中定義同名函數和同名變量,而沒必要擔憂命名衝突。io

 

0x04   C++中的類成員聲明staticclass


  靜態數據成員是類的成員,而不是對象的成員,這樣就出現如下做用:

  (1)類的靜態成員函數是屬於整個類而非類的對象,因此它沒有this指針,這就致使 了它僅能訪問類的靜態數據和靜態成員函數。      

  (2)不能將靜態成員函數定義爲虛函數。      

相關文章
相關標籤/搜索