c 基本型別

2021-08-03 07:59:11 字數 1505 閱讀 6352

資料型別分為兩種:值型別和引用型別,這兩種型別的物件在記憶體的儲存方式不同。

定義:引用型別:表示操作的物件是同乙個,即當傳乙個引數給另乙個方法時,在另乙個方法中改變這個變數的值,那麼呼叫這個方法時傳入的值也將發生變化。

值型別:表示複製乙個當前變數傳遞給方法,在方法中改變這個值時,最初生命的變數值不會改變。

值型別值型別及基本資料型別,常被分為四類八種:

四類:整型,浮點型,字元型,邏輯型

八種:1,整型3種 byte, short, int, long

2,浮點型 float, double

3,字元型 char

4,邏輯型 boolean

引用型別

除了四類八種的基本型別,其他資料型別都是引用型別,例如:string型別,object型別等。

傳遞:

值傳遞:基本資料型別複製都屬於值傳遞。傳遞的是實實在在的變數值,是原引數的拷貝,實參傳遞給形參的值,形參發生變化而不影響實參。

引用傳遞:引用型別之間的賦值屬於引用傳遞。傳遞的物件是引用的位址,即將實參的位址傳遞給形參,形參改變了實參也相應發生變化,因為指向同乙個位址。

儲存:

1.    值型別:只需一段單獨的記憶體,用於儲存時間的資料。

引用型別:需要兩端記憶體:

第一段:實際資料,總是位於堆中

第二段:乙個引用,指向資料在堆中的儲存位置

資料如果不是其他型別的成員就會像下圖一樣存貯,對於值型別資料放在棧中。對於引用型別資料放在堆中而引用放在棧中

2.儲存引用型別物件的成員

引用型別物件的資料始終儲存在堆中,如下圖。

值型別資料,或引用型別資料的引用可以放在堆裡,也可以放在棧裡。

例如:引用型別的物件名稱為mytype,有兩個成員:乙個值型別成員和乙個引用型別成員,將如何儲存呢?

對於乙個引用型別,其實例的資料始終放在堆裡。既然兩個成員都是物件資料的一部分,那麼他們都會被放在堆裡,無論是值型別還是引用型別 如圖:

裝箱和拆箱

裝箱就是值型別轉化為引用型別的過程。將乙個值型別變數裝箱成乙個引用型別變數,首先會在託管堆上為新的引用型別變數分配記憶體空間,然後將值型別變數拷貝到託管堆上新分配的物件記憶體中,然後返回新分配的物件記憶體位址。

例如:int val = 100;

object obj = val;

console.writeline (「物件的值 = ",obj);

拆箱操作即是裝箱的逆操作,拆箱的過程,是將值型別轉換為引用型別,再由引用型別轉換為值型別的過程。

例如:int val = 100;

object obj = val;

int num = (int) obj;

console.writeline ("num: ",num);

C 基本型別

const限定符 浮點數sizeof 部分問題總結 浮點型 float,double,long double 根據寬度width來排序 char short int long long long 寬度,表示範圍 很多系統直接用最小長度,short為16位,long為32位,但int可以有很多選擇 1...

C 的基本型別

在數學中,整數和分數統稱為有理數,無限不迴圈小數和開根開不盡的數統稱為無理數,而有理數和無理數統稱為實數。在計算機中,處理的物件是資料。為了描述不同的物件而需要不同的資料,因此,c 語言提供了豐富的資料型別。c 的資料型別主要包括基本資料型別和構造資料型別。其中基資料本型別包括整型 浮點型 字元型 ...

C語言基本型別詳解

剛剛看到乙個部落格上貼了這個,解決了我一直以來的疑問 int和long是不是一樣的?答案是 不確定。資料型別名稱 位元組數 別名 取值範圍 int signed,signed int 由作業系統決定,即與作業系統的 字長 有關 unsigned int unsigned 由作業系統決定,即與作業系統...