不同儲存型別的變數的宣告 內部函式 外部函式

2021-07-04 17:11:11 字數 1244 閱讀 4584

儲存型別:

1、用auto宣告自動變數

例:  int f(int a)

auto int b,c=3;

函式呼叫時自動分配記憶體空間,函式呼叫結束時自動釋放這些空間。auto可以省略,定義變數時若沒有宣告儲存型別,即預設為自動變數。

2、用static宣告靜態區域性變數

3、用register宣告暫存器變數

一般情況下,變數(包括靜態儲存方式和動態儲存方式)的值是存放在記憶體中的。當程式用到哪乙個變數的值時,由控制器發出指令將記憶體中該變數的值送到cpu中的運算器。經過運算器進行運算,如果需要存數,再從運算器將資料送到記憶體存放。

如果有一些變數使用頻繁(例如在乙個函式內執行1000次迴圈,每次迴圈中都要引用某區域性變數),則為訪問變數的值要花不少時間。為提高執行效率,c++允許將區域性變數的值放在cpu的暫存器中,需要用時直接從暫存器中取出參加運算,不必再到記憶體中去訪問。由於對暫存器的訪問速度遠高於對記憶體的訪問速度,因此這樣做可以提高執行效率。這種變數叫做暫存器變數,用關鍵字register作宣告。

4、用extern宣告外部變數

全域性變數(外部變數)是在函式外部定義的變數,變數作用範圍是從宣告位置到程式結束,這時如果要在變數宣告之前使用該變數,那麼就要在使用時加上extern宣告,也叫提前引用宣告。

例:#include

using namespace std;

int max(int,int);

void main()

{extern int a,b;          //對全域性變數a,b作提前引用宣告

coutint max(int x,int y)

{int z;

z=x>y?x:y;

retrun z;

如果乙個程式包含兩個源程式檔案,在兩個檔案中都要用到同乙個外部變數num,不能分別在兩個檔案中各自定義乙個外部檔案num,否則在進行程式的連線時會出錯。正確的做法是:在任乙個檔案中定義外部變數num,而在另一檔案中用extern對num作外部變數宣告。

例:extern int num;

5、用static宣告靜態外部變數

有時在程式設計中希望某些外部變數只限於被本檔案引用,而不能被其他檔案引用。這時可以在定義外部變數時加乙個static宣告。

內部函式和外部函式

如果乙個函式只能被本檔案中其他函式所呼叫,則它稱為內部函式,要在函式名和函式型別的前面加static。

如果乙個函式首部的最左端冠以關鍵字extern,則它稱為外部函式,可供其他檔案呼叫,extern可以省略。

變數的內部儲存 值和型別

php是一種弱型別的指令碼語言,弱型別不表示php的變數沒有型別區分,php變數有8種原始型別 四種標量型別 兩種復合型別 兩種特殊型別 乙個變數能在執行期間從一種型別轉換為另一種型別,那麼php是如何實現這種變數的型別戲法的呢?在引擎內部,變數都是用乙個結構體來表示,這個結構體可以在 zend z...

不同變數的儲存區域

記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集...

TS 的型別宣告和變數型別

一 型別宣告 型別宣告是 ts 非常重要的乙個特點,通過型別宣告可以指定 ts 中變數 引數 形參 的型別 當為變數賦值時,ts編譯器會自動檢查值是否符合型別宣告,符合則賦值,否則報錯 簡而言之,型別宣告給變數設定了型別,使得變數只能出儲存某種型別的值,這是 js 不具備的 語法 let a num...