變數 靜態變數

2022-09-11 18:51:12 字數 889 閱讀 7065

變數:

|全域性變數(外部變數):在函式外部定義,以及被本程式所有物件或函式引用。

|區域性變數(內部變數):由某個函式或物件建立,只能被內部引用,而無法被其他物件或函式引用。

特點:|該變數在全域性資料區分配記憶體;

|未經初始化的靜態全域性變數會被程式自動初始化為0(在函式體內宣告的自動變數的值是隨機的,除非它被顯式初始化,而在函式體外被宣告的自動變數也會被初始化為0);

|靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的;

|靜態變數都在全域性資料區分配記憶體,包括後面將要提到的靜態區域性變數。對於乙個完整的程式,在記憶體中的分布情況如下圖:

**區 //low address全域性資料區堆區棧區 //high address

|靜態全域性變數不能被其它檔案所用,其它檔案中可以定義相同名字的變數,不會發生衝突;

全域性變數和全域性靜態變數的區別:

|全域性變數是不顯式用static修飾的全域性變數,全域性變數預設是有外部鏈結性的,作用域是整個工程,在乙個檔案內定義的全域性變數,在另乙個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數。

|全域性靜態變數是顯式用static修飾的全域性變數,作用域是宣告此變數所在的檔案,其他的檔案即使用extern宣告也不能使用。

特點:

|該變數在全域性資料區分配記憶體;

|靜態區域性變數在程式執行到該物件的宣告處時被首次初始化,即以後的函式呼叫不再進行初始化;

|靜態區域性變數一般在宣告處初始化,如果沒有顯式初始化,會被程式自動初始化為0;

|它始終駐留在全域性資料區,直到程式執行結束。但其作用域為區域性作用域,當定義它的函式或語句塊結束時,其作用域隨之結束。

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

靜態變數,非靜態變數和final變數

package com.founder.bg.quartz.job 7 在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,8 其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某 9 個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,10 不用建...

靜態變數與動態變數

1 靜態儲存變數通常是在變數定義時就分定儲存單元並一直保持不變,直至整個程式結束。靜態變數,全域性動態變數都是靜態儲存 2 動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放 3 靜態儲存變數是一直存在的,而動態儲存變數則時而存在時而消失。通常把由於變數儲存方式不同而產生的特性...