1. 程式人生 > >C語言筆記之資料儲存型別

C語言筆記之資料儲存型別

    變數的儲存型別是指儲存變數值的記憶體型別。變數的儲存型別決定變數何時建立,何時銷燬以及他的值要儲存多久。

    在任何程式碼塊之外申明的變數總是儲存與靜態記憶體中(不屬於堆疊的記憶體),這叫做靜態(static)變數。對於這種變數,你無法為他們指定其他儲存型別。靜態變數在成勳執行前建立,在程式執行期間始終存在。它始終保持原先的值,除非你給它賦一個別的值或者程式結束。

    如果你給申明在程式碼塊內部的變數加上關鍵字static,可以使他的儲存型別從自動變為靜態。具有靜態儲存型別的儲存變數在程式執行的過程中始終存在,而不僅僅在申明它的程式碼塊中存在。修改了變數的儲存型別不代表修改了變數的作用域,它任仍然只能在該程式碼塊內按名字訪問。(函式的形式引數不能申明為靜態。實參總是在堆疊中傳遞給函式,用於支援遞迴。)

    關鍵字register可以用於自動變數的宣告,提示它應該儲存在機器的硬體暫存器而不是記憶體中,這類暫存器稱為暫存器變數。暫存器變數比儲存於記憶體中的變數訪問效率高,但是,編譯器不一定會‘理睬’register關鍵字,這取決於編譯器的暫存器優化方案。暫存器變數的建立和銷燬時間和自動變數相同,但它需要一些額外的工作。在一個使用暫存器變數的函式返回之前,這些暫存器先儲存的值必須恢復,確保呼叫者的暫存器變數未被破壞。許多機器使用執行時的堆疊來完成這個任務,當函式開始執行時,它把需要使用的所有暫存器的內容儲存在堆疊中,當函式返回時,再把這些值恢復到暫存器中。在許多機器的硬體實現中,並不為暫存器指定地址。由於暫存器值的儲存和恢復,某個特定暫存器在不用時刻所儲存的值不一定相同。因此,機器並不向你提供暫存器變數的地址。
    關於初始化:
    靜態變數的初始化中,我們可以把想要初始化的值放在程式執行時會變數會使用的位置。如果不顯式地指定值,變數將初始化為0。
    自動變數沒有預設的初始化值,顯式的初始化將在程式碼塊起始出插入一條隱式地賦值語句。在宣告變數的同時初始化和先聲明後賦值只有風格之差,沒有效率之別(宣告為const除外)。這條隱式地賦值語句使自動變數在程式執行到它們所宣告的函式(或程式碼塊)時,每次都將重新初始化。初始化在執行時執行,你可以用任何表示式作為初始化值。如果你不對自動變數顯示地初始化,那麼當它們被建立時,它們的值總是垃圾。

相關推薦

C語言筆記資料儲存型別

變數的儲存型別是指儲存變數值的記憶體型別。變數的儲存型別決定變數何時建立,何時銷燬以及他的值要儲存多久。 在任何程式碼塊之外申明的變數總是儲存與靜態記憶體中(不屬於堆疊的記憶體),這叫做靜態(static)變數。對於這種變數,你無法為他們指定其

黑馬程式設計師——C語言筆記資料型別與常量

------- android培訓、java培訓、iOS培訓、.Net培訓、期待與您交流! ---------- 1、什麼是資料型別 資料型別是指資料以何種方式儲存在記憶體中,不同的型別儲存方

現代C語言程式設計資料儲存

C語言  2.1 計算機資訊資料儲存 2.1.1 計算機資訊資料儲存單位 在計算機最底層,資料都是以二進位制(01010)的方式儲存,而計算機中最小的儲存單位是位(bit),用來表示0或者1。計算機中最基本的儲存單位是位元組(Byte),1個位元組對應8個位(B

現代C語言程式設計資料儲存(一)

2.1 計算機資訊儲存 2.1.1 計算機常用儲存單位 在計算機最底層,資料都是以二進位制(01010)的補碼方式儲存,而計算機中最小的儲存單位是位(bit),用來表示0或者1。 計算機中最基本的儲存單位是位元組(Byte),1個位元組對應8個位(Bit)。 而日常應用中常使用的

C語言筆記儲存

在C語言中,一個數據物件(往往是指變數)可以由3種屬性來描述:作用域,儲存時期,連結。每種屬性有不同的值,這些不同值的組合構成資料物件的儲存模型,又稱為儲存類,即,一個數據物件如何存在於計算機中。以下

C語言筆記--3資料型別的經典應用--1陣列

舉些陣列中經常用到的應用小例子: 目錄 楊輝三角 資料排序(冒泡法n2、選擇法n2) // 冒泡法排序 void test02_2() { int a[10]={12,

現代C語言程式設計資料計算

現代C語言程式設計之資料計算 C語言程式設計 3.1 運算子概述 計算機最核心的任務就是完成資料的計算,C語言提供了豐富(多達34種)的運算子來實現不同資料的各種運算,之前在求資料型別的大小時已經使用過的sizeof()

C語言筆記 第四課 型別轉換

第四課 型別轉換 型別之間的轉換 C語言中的資料型別可以進行轉換 強制型別轉換 隱式型別轉換 強制型別轉換 強制型別轉換的語法 (Type)var_name; (Type)value; 強制型別轉換的結果 目標型別能夠容納目標值:結果不變 目標型別不能容納目標值:結果將產生截斷

安卓筆記-資料儲存

檔案儲存、 1.安卓Context類給我們提供了一個方法叫openFileOutput()這個方法攜帶兩個引數,第一個是檔名第二個檔案操作模式這裡一般是固定的兩種MODE_PREVATE和MODE_APPEND還有兩種被廢棄不用。該方法返回的是一個java檔案I

C++學習筆記五 複合型別結構體(struct)

結構宣告的位置很重要。可以有兩種宣告位置:一種是可以將宣告放在main()函式中,緊跟在開始括號的後面。另一種是將宣告放在main()函式的前面,這裡採用的就是這種方式,位於函式外面的宣告稱為外部宣告。對於只有一個主函式的程式來說放在外面和裡面沒有區別,但是如果有多個函式,外部宣告可以被其後面的任何函式使用,

C++學習筆記七 複合型別---列舉

C++的enum工具提供了另一種建立符號常量的方式,這種方式可以代替const。使用enum的句法與使用結構相似,例如:enum spectrum { red,  orange , yellow,  green, blue,  violet,  indigo  ,ultra

C語言學習筆記資料型別

1、整數型別 1.1 型別 型別 位數 short(或short int) 16位 int 16位或32位 long (或long int) 32位 long long(或long lo

c++筆記資料型別轉換

#include <iostream> #include <string> using namespace std; class Complex { public: Complex() //預設建構函式 { real = 0; imag = 0;

C語言(一 資料型別儲存類、分配空間)

C語言是一種移植性強,面向過程的語言,最初由丹尼斯創立,用於編寫UNIX作業系統,移植性強指的是它的程式碼通用性強。 特點:操作簡易,結構化語言,適合處理底層事件。 我的第一個C語言程式 #include <stdio.h> /*前處理器指令,在實際編譯之前執行的*

C語言(一 資料型別儲存類、分配空間)

C語言是一種移植性強,面向過程的語言,最初由丹尼斯創立,用於編寫UNIX作業系統,移植性強指的是它的程式碼通用性強。 特點:操作簡易,結構化語言,適合處理底層事件。 我的第一個C語言程式 #include <stdio.h> /*前處理器指令,在實

C語言基礎基本資料型別

char 字元型別 1位元組  輸出符為%c int  整型  4位元組  輸出符為%d short  短整型  2位元組  輸出符為%hd float 單精度浮點型  4位元組  輸出符為%f l

C++語言筆記系列十八——虛函數(1)

自己 語言 數據類型 說明 出現 adium 重定義 angle rac 1.C++中的多態 (1)多態性:同一個函數的調用能夠進行不同的操作,函數重載是實現多態的一種手段。 (2)聯編:在編譯階段進行聯接。即是在編譯階段將一個函數的調用點和函數

C++語言筆記系列二十——模版

輸出 類模板 pos 有一個 class 初始 個數 創建對象 example 1.隨意輸入兩個數x和y,輸出最大值max。 int max(int x, int y) {return x>y?x:y;} 2.函數模版 (1)用一種或者多

線性表及其應用C語言實現(資料結構複習最全筆記

一、順序表的表示與實現 1.線性表的順序結構定義 #define LIST_INIT_SIZE 100 //線性表儲存空間的初始分配量 #define LISTINCREMENT 10 //線性表儲存空間的分配增量 typedef struct { ElemType* el

java複習筆記資料型別

在java中一共有8種基本型 4種整型:int儲存4位元組、short儲存2位元組、long儲存8位元組、byte儲存1位元組; 2種浮點型:float儲存4位元組、double儲存8位元組; char型別:在程式中少用此種類型,多用String字串作為抽象資料型別,這樣可以減少一些不必