程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 【C++自我精講】基礎系列四 static

【C++自我精講】基礎系列四 static

編輯:C++入門知識

【C++自我精講】基礎系列四 static 0 前言

變量的存儲類型:存儲類型按變量的生存期劃分,分動態存儲方式和靜態存儲方式。

 1)動態存儲方式的變量,生存期為變量所在的作用域。即程序運行到此變量時才為其分配存儲空間,作用域結束時,會自動收回為其分配的存儲空間。

 2)靜態存儲方式的變量,生存期為整個程序執行的過程。即程序開始時就為其分配存儲空間,程序結束時,才會收回為其分配的存儲空間。

4種變量的存儲類型:

 1)自動類型(auto):動態存儲方式的變量,局部變量,auto常常省略。

 2)寄存器類型變量(register):動態存儲方式的變量,編譯器不為此類型變量分配存儲空間,而是直接使用CPU的寄存器。存取速度快,主要用於控制循環次數等不需要長期保存值的變量。

 3)外部類型變量(extern):靜態存儲方式的變量,系統自動初始化值,又叫全局變量,全局變量是從作用域提出的,外部變量是從存儲方式提出的,表示了它的生存期。

 4)靜態存儲變量(static):靜態存儲方式的變量,系統自動初始化值,靜態變量只能在它的作用范圍內使用。

1 static用法

static:靜態存儲變量的類型說明符。

static局部變量:在函數內的局部變量類型說明符前加上static說明符就構成靜態局部變量。局部變量變為靜態局部變量,即改變了它的生存期。

  i; 

 1)static局部變量在函數內定義。

 2)static局部變量的生存期是整個程序。

 3)static局部變量的作用域為函數體內。但再次調用定義此函數時,又可繼續使用此變量,而且保存了前次被調用後留下的值。

 i = ;    
    i++  i; 
    i++ main( argc, * iRet = = Fun1();  
    iRet = Fun1();  
    iRet = Fun2();  
    iRet = Fun2();  
     

static全局變量:在全局變量類型說明符前加上static就構成靜態的全局變量。全局變量變成靜態全局變量,即改變了它的作用域。

 1)當一個源程序由若干個源文件組成時,在一個源文件中定義的外部變量要在其它的源文件中使用,在使用前就用extern進行外部聲明。

 2)如果在一個源文件中定義的外部變量不想讓其它源文件使用,則必須聲明為static全局變量,只能供所在的源文件使用。同時可以避免在其它源文件中引起錯誤。

++ ++
 ++

 static類成員變量:類的所有對象都用同一個static成員變量。通過對象名或類名都可以調用。

 
a1.x = ;  
a1.y = ;  
a2.y = ;  

 static類成員變量和普通數據成員一樣,不能在類的定義體中初始化,只能在類外進行初始化。但static const卻可以。

 y =    x =  

static類成員函數:類的所有對象都用同一個static成員函數。通過對象名或類名都可以調用。

 1)static類成員函數沒有this指針。

 2)static類成員函數不能被聲明為const和虛函數。

 3)static類成員函數可以訪問所屬類的static成員變量,但不能使用非static成員變量。

   Fun();  
 ++;  
    y++;  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved