儲存類別,鏈結和記憶體管理

2021-08-15 07:57:22 字數 1243 閱讀 1209

參考資料

根據乙個變數的作用域(可見的範圍)和生命期(它存在多長時間)來劃分儲存類別。

根據作用域可分為塊作用域,函式作用域,函式原型作用域,檔案作用域。

塊作用域:在{}之間都乙個屬於塊作用域。塊裡面定義的變數,作用範圍是從定義處到包含該定義的塊的末尾。

函式作用域:這個我也不太清楚,書上講僅用於goto語句的標籤。

函式原型作用域:這個比較常見,函式原型的形參名(變數名)是也,如下所示:

int mighty(int mouse,double large);//裡面的mouse,large都屬於函式原型作用域
它們的作用範圍是從形參定義處到原型宣告結束。

檔案作用域:變數的定義在函式外面,具有檔案作用域,作用域為:從它定義處到該定義所在檔案的末尾

double*  ptd;

ptd=(double*) malloc(30 * sizeof(double));//分配30個大小為double型別的空間,ptd指向這個塊的首元素

也可以說通過malloc(),我們建立了乙個30個double型別大小的陣列,通過ptd[n]進行訪問第n+1個數。它可以建立動態陣列,例子如下:

ptd=(double*)malloc(n*sizeof(double));//其中n是變數
還有乙個函式free(),它是用來釋放malloc()分配的記憶體,靜態記憶體的數量在編譯時是固定的,在程式執行期間也不會改變。自動變數使用的記憶體數量在程式執行期間自動增加或減少。但是動態分配的記憶體的記憶體數量只會增加,除非用free()進行釋放。它的**框架如下:

double* temp=(double*)malloc(n * sizeof(double));//分配動態記憶體

free(temp);//釋放記憶體,一般應該在記憶體不需要的時候再執行

儲存類別

儲存期作用域

鏈結宣告方式

自動自動塊無

塊內暫存器自動塊

無塊內,使用關鍵字register

靜態外部鏈結

靜態檔案

外部所有函式外

靜態內部鏈結

靜態檔案

內部所有函式外,使用關鍵字static

靜態無鏈結靜態塊

無塊內,使用關鍵字static

c語言的儲存型別和關鍵字extern、static

c語言變數的鏈結屬性詳解

c語言3種鏈結屬性

C語言 儲存類別 鏈結和記憶體管理

c物件有四種儲存期 靜態儲存期 執行緒儲存期 自動儲存期 動態分配儲存期 double p p double malloc 10 sizeof double const float p p可以指向別處,p指向的值不能變 float const p p不可以指向別處,p指向的值可以改變 const f...

C語言中的儲存類別,鏈結和記憶體管理

這是本人關於 c primer plus 這本c語言經典著作 第12章的乙個總結 如有不對 歡迎指出 int a 3 這個東西建立了乙個 叫做 a 的識別符號 從硬體上來看 就是 有乙個叫a的識別符號占用了一定物理記憶體 識別符號有兩個性質 乙個叫 作用域 scope 還有乙個叫 鏈結 linkag...

第12章 儲存類別 鏈結和記憶體管理(未完結)

關鍵字 auto extern static register const volatile restricted thread local atomic 函式 rand srand time malloc calloc free 如何確定變數的作用域 可見的範圍 和生命期 它存在多長時間 設計更複...