Lecture
講述Swap的兩個方法如下:
function裡,下一部分就會講到用指標(Pointer)來解決這個問題。
Lecture, continued
用一些Hollywood跟監、追蹤相關影片說明人們會利用監視器去追蹤某一些
人,拍到目標時,會需要放大(Zoom in)或是提高(enhance)影片中的人物,
藉此來說明如何用程式來表現顏色,簡單的就是黑與白(0跟1),彩色的話
就是255,提供一個網站來表示比較清楚:色碼轉換器。
之後,就又談論到如何使用指標來解決Swap的問題。那課程中也有用生動
的方式來解釋甚麼是指標,請參考以下影片(從50:36開始)
人,拍到目標時,會需要放大(Zoom in)或是提高(enhance)影片中的人物,
藉此來說明如何用程式來表現顏色,簡單的就是黑與白(0跟1),彩色的話
就是255,提供一個網站來表示比較清楚:色碼轉換器。
之後,就又談論到如何使用指標來解決Swap的問題。那課程中也有用生動
的方式來解釋甚麼是指標,請參考以下影片(從50:36開始)
Walkthroughs
Sigma-0
Section
Hexadecimal
講述人們常用的十進制,電腦用的二進制,以及為了方便簡潔看一大串二
進制的十六進制,例如: 1001010100100111,四個為一組的話就變為:
1001 0101 0010 0111,改為十六進制: 0x9527。
Pointer
花了將近30分鐘視頻來講述指標的概念,因為之前就講過,這邊就跳過
了。
Dynamic Memory Allocation
就硬體來說,程式所做的任何操作都是在RAM裡面,而不是硬碟儲存空間裡,因此,程式都
是在有限的RAM裡操作。
動態記憶分配需要搭配指標,並且在執行結束之後,釋放記憶體。舉例來說:如果某個瀏覽
器的網頁一直開分頁,沒有釋放記憶體的話,執行速度會越來越慢,因為記憶體都被佔用完
了。在程式裡int* a = malloc(sizeof(int));實際上是建立了兩個記憶體位置,只是其中一個記憶
體位置叫做a,指向了一個沒有名字的記憶體位置。
Structures
自定義型態架構,可以把不同的型態int, char, float, array[]組合為一個型態架構。如果要用指標
的話為:struct car *mycar = malloc(sizeof(struct car));,car裡面的參數設定數值為:
(*mycar).year = 2001; (*mycar).plate = "CS50";或者這樣表示 mycar->year = 2001; mycar->plate =
"CS50";。
Defining Custom Types
自定義型態新名稱,舉例:typedef unsigned char byte;,紅色為舊名稱,藍色為新名稱。因
此,在CS50的標頭檔裡的string就是 typedef char* string; 或是 typedef struct car car_t; 或是如下
就硬體來說,程式所做的任何操作都是在RAM裡面,而不是硬碟儲存空間裡,因此,程式都
是在有限的RAM裡操作。
動態記憶分配需要搭配指標,並且在執行結束之後,釋放記憶體。舉例來說:如果某個瀏覽
器的網頁一直開分頁,沒有釋放記憶體的話,執行速度會越來越慢,因為記憶體都被佔用完
了。在程式裡int* a = malloc(sizeof(int));實際上是建立了兩個記憶體位置,只是其中一個記憶
體位置叫做a,指向了一個沒有名字的記憶體位置。
Structures
自定義型態架構,可以把不同的型態int, char, float, array[]組合為一個型態架構。如果要用指標
的話為:struct car *mycar = malloc(sizeof(struct car));,car裡面的參數設定數值為:
(*mycar).year = 2001; (*mycar).plate = "CS50";或者這樣表示 mycar->year = 2001; mycar->plate =
"CS50";。
Defining Custom Types
自定義型態新名稱,舉例:typedef unsigned char byte;,紅色為舊名稱,藍色為新名稱。因
此,在CS50的標頭檔裡的string就是 typedef char* string; 或是 typedef struct car car_t; 或是如下
6 | fact(1) | 7 |
5 | fact(2) | 8 |
4 | fact(3) | 9 |
3 | fact(4) | 10 |
2 | fact(5) | 11 |
開始 1 | main() | 結束 12 |
執行順序 | Stack Frames | 執行順序 |
沒有留言:
張貼留言