首先,看看變數的儲存:
int變數global儲存在全域性資料儲存區,stackstore儲存在棧中,heapstore儲存在堆中;global ;
intmain()
static作為靜態修釋符用法:
1.static可以用來修飾變數,也可以用來修飾函式,其用法相似;
2. static可以靜態的呈現乙個變數,在作用範圍內不會改變變數的值;
3. 但是如果函式的區域性變數複寫了變數的值,那麼這個值在當前區域性函式內有效; 若出了當前區域性範圍,static的值生效;
例一, static在全域性範圍內,用include擴充套件static的作用範圍, 用extern擴充套件函式的作用域:
107.h
#ifndef _107h_107.cpp#def _107h_
extern voidfunc();
#endif
#include "stdafx.h"#include #include #include "107.h"voic func()108.h
#ifndef _108h_108.cpp#def _108h_
extern voidfunc1();
#endif
#include "stdafx.h"#include #include #include "108.h"voic func1()109.cpp
#include "stdafx.h"#include #include #include "107.h"#include "108.h" intmain()輸出結果為:
例二,static在當前文字作用域,用extern擴充套件函式的作用域:
file1.h
#ifndef _file1_file1.cpp#define _file1_
extern
void
func1();
extern
void
func2();
#endif
#include "stdafx.h"
#include #include #include "file1.h"
static char* hello = "hello world!";
void func1()
void func2()
file2.cpp
#include "輸出結果:stdafx.h
"#include
#include
#include
"file1.h
"int
main()
!!! 若將static char* hello = "hello world!"放入func1, 如下;
file1.cpp
#include "那就會出錯,錯誤為:stdafx.h
"#include
#include
#include
"file1.h
"void
func1()
void
func2()
C中 static 的用法
對於函式而言,僅僅為隱藏作用。對於變數而言,1 隱藏 2 可以保持變數內容的持久,因為static變數儲存在靜態儲存區只在程式的剛開始完成初始化,唯一的一次初始化 即使在子函式中作靜態變數 若未賦值,則系統自動賦予0值。為自動區域性變數不賦初值的話,其值不定。當編譯多個檔案時,所有未加static字...
C 靜態static的用法
一 靜態類 靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說,不能使用 new 關鍵字建立靜態類型別的變數。在宣告乙個類時使用static關鍵字,具有兩個方面的意義 首先,它防止程式設計師寫 來例項化該靜態類 其次,它防止在類的內部宣告任何例項欄位或方法。靜態類的主要特性 1 僅包含靜態成員...
c語言 static的用法
static在c裡面可以用來修飾變數,也可以用來修飾函式。先看用來修飾變數的時候。變數在c裡面可分為存在全域性資料區 棧和堆裡。其實我們平時所說的堆疊是棧而不是堆,不要弄混。int a int main a是全域性變數,b是棧變數,c是堆變數。static對全域性變數的修飾,可以認為是限制了只能是本...