專案名稱
【物聯網工程實踐 --蘇嵌實訓第5天】
今日進度以及任務
1,free是如何知道需要釋放的空間大小。(實現原理)
2,static在什麼樣的情況下使用?
3,為什麼要使用typedef給型別重新命名?
本日任務完成情況
一:free函式通常和malloc函式共同使用,malloc函式通過作業系統分配,直接得到乙個滿足程式要求的記憶體塊,但是對於作業系統來說,它還會分配乙個管理塊,但是這個管理塊是方便作業系統使用的,而使用者是無法使用且無法看見的。這樣一來,在呼叫free函式的時候,雖然引數只有乙個,但是free函式可以根據這個引數找到該塊的首位址,進而找到該塊的管理塊,然後設定管理塊為可用,這樣就可以釋放目標塊了。所以說malloc函式需要設定大小,而free就不需要知道目標空間的大小。
詳參:三:1,為了使類bai型的含義更加明確;
比如typdef unsigneg char byte 你就知道du接下來zhi用byte定義的是將要對位元組進行操作,而不是字dao符或字串。
2,為了保持庫**的相容和一致性;
比如你寫了乙個庫,某個資料型別需要用int,後來你覺得不夠大,更新版本的時候就要改所有的int為long,如果typedef int int_type的話,你就只需改typedef就可以了
3,為了簡化繁瑣的型別宣告;
c++裡,string其實是basic_string, allocator>的typedef,你不想每次都寫那麼長的型別宣告吧
本日開發**現的問題彙總
本日未解決問題
本日開發收穫
函式--函式三要素:函式名,形參,返回值
1,函式名:命名--->自注釋性 動詞+名詞 add_user del_user
2,函式引數:實參是什麼型別,形參就要定義什麼型別;《傳陣列名》
c語言記憶體管理《記憶體是稀缺資源》
1,對程式設計師來說,記憶體管理應該掌握那些內容?
資料存放在哪? 關鍵字
register:盡可能的將資料儲存到cpu 的暫存器中,提高了程式執行效率(省去了cpu通過匯流排從記憶體中抓取資料的過程)
注意事項: 只能修飾區域性變數,不能修飾全域性變數和函式 一旦修飾了,就不能做取位址符
static:(靜態變數)
作用:修飾區域性變數:延長了區域性變數的生命週期,程式結束之後再釋放(只執行一次)
修飾全域性變數:靜態全域性變數,該變數不能在其他檔案使用。
修飾函式:該函式只能被本檔案的函式呼叫,不能被其他檔案訪問
extern(外部宣告):告訴編譯器這個函式或是變數是在其他檔案定義的;
const
修飾變數:該變數成為乙個唯讀變數(值是可以被改變的)
距離誰近就修飾誰
使用注意事項:修飾某個變數時一定要初始化
typedef:給資料型別重新命名
復合資料型別:
struct(相同型別定義在一起),union(大端位元組序,小端位元組序),enum(當專案中需要多個整數巨集時)
其他
C 學習第五天
c 中的is和as is可用於任何型別。例如 int a 10 a is object true object o 10 o is int true o person o is int false as右側型別必須為引用型別或可空型別。as操作如果失敗,不丟擲異常,而是返回null 結構 struc...
C語言第五天
c中陣列詳解 從函式返回陣列 小結c指向陣列的指標 節點陣列的初始化 指標與陣列名的區別 c enum 列舉 c語言支援陣列資料結構,它可以儲存乙個固定大小的相同型別元素的順序集合。陣列是用來儲存一系列資料,但它往往被認為是一系列相同型別的變數。陣列的宣告並不是宣告乙個個單獨的變數,比如num0 n...
C 基礎 第五天
c 保留有效位數的方法.cout.precision 2 總的有效數字 cout.flags cout.fixed 小數點後面有效數字 cout.unsetf cout.fixed 復原輸入資料時,前面輸入錯誤,導致後面無法輸入.解決方法.過程和原理 include include include ...