2012年12月27日 星期四

C語言的五四三

不確定自己觀念有沒有錯誤

1.
int a = 3;          ===> 有個暫存空間裡面存著3
int c = a + b;      ===> 有個暫存空間裡面存著a + b的計算結果
int c = (int) 3.2;  ===> 有個暫存空間會儲存3.2轉型的結果(即整數3),這個暫存空間的型態是int

2.
不管是哪種型態,在記憶體裡面都是二進位
不同型態的差別在於"語言處理該資料的方式"不同
例如int型態的變數就會以C"處理int型態的方式"處理,也就是會以"int的方式來儲存該變數、讀取該變數"

3.
同型態變數的賦值其實單純只是把記憶體資料一字不漏得複製過去而已
例如:
int a = 3, b;
b = a;  ===> 單純把a這個記憶體位置上的二進位資料完整複製過去b
例如:
int baseAddr = 0x00;
void *ptr = (void *)baseAddr;  // 讓ptr指向0x00000000;這個位置
因為(void *)baseAddr會產生一個暫存空間,裡面的值是0x00,而且這個暫存空間的型態是void *
既然暫存空間的型態和ptr的型態同樣都是void *,所以賦值的動作其實只是把暫存空間的二進位資料完整複製過去ptr而已

沒有留言:

張貼留言