蘇嵌嵌入式實訓第六天

2021-10-07 22:51:55 字數 1117 閱讀 9432

課程總結:

1、函式的三要素:函式名、形參、返回值

函式名:命名——自注釋性 動詞+名詞

函式引數:引數是什麼型別,形參就要定義成什麼型別;

傳位址和返回值:

只當使用不修改實參變數的值,傳實參變數名

當使用以及修改實參變數的值,傳實參變數的位址;

2、記憶體管理

2g的物理記憶體空間分成4g的虛擬位址空間

linux虛擬位址空間分布圖

3、關鍵字

register、static、extern、const、typedeef

4、復合資料型別

作業:1、free是如何知道釋放多大空間的

系統在分配記憶體時除了分配指定的記憶體空間外,還有分配用於儲存記憶體空間大小等資訊。所以記憶體釋放時不再需要再指定釋放多大的記憶體空間,只需要指定該塊記憶體空間的首位址即可。

2、static在什麼樣情況下使用?

(1)、靜態變數

當分析物件中所具備的成員變數的值都是相同的。這時這個成員可以被靜態修飾。只要資料在物件中都是不同的,就是物件的特有資料,必須儲存在物件中,是非靜態的。如果是相同的資料,物件不需要做修改,只需要使用即可,不需要儲存在物件中,定義成靜態的。

(2)、靜態函式

函式是否用靜態修飾,就參考一點,就是該函式功能是否有訪問到物件中的特有資料。簡單來說,從原始碼看,該功能是否需要訪問非靜態的成員變數,如果需要,該功能就是非靜態的。如果不需要,就可以將該功能定義成靜態的。當然,可以定義成非靜態,但是非靜態需要被物件呼叫,而僅建立物件呼叫非靜態的沒用訪問特有資料的方法,該物件的建立時沒有意義。

3、為什麼用使用typedef給型別重新命名?

例如乙個struct結構,你定義後,命名為cola。假設你定義了兩個類使用它,這兩個類分別是mcdonal(麥當勞)和kfc(肯德基)。你發現這個概念太籠統,於是,在mcdonal這個類裡面,你用typedef定義為coco-cola;在kfc這個類裡面,你typedef重定義為pesi-cola。 

typedef struct cola

coco-cola,pesi-cola;

linux核心中,很多很複雜的「結構」,例如記憶體結構描述符,程序結構描述符,但它們也會有類似上面那種情況,需要用在不同的背景下;因此,經常使用typedef重新命名。

蘇嵌嵌入式第六天Linux實訓

2020 7 9開始了第六天的實訓內容,今天要繼續學習c語言,對於我來說,今天學的大部分都是新的知識,也許有之前學過的,現在卻忘了的。以下為今天學習內容的總結和作業。函式的三要素 函式名 形參 返回值 函式名 命名 自注釋性 動詞 名詞 add user del user 函式引數 實參是什麼型別,...

蘇嵌嵌入式linux實訓第六天

函式的三要素 函式名,形參,返回值 傳位址和傳值 什麼時候傳位址什麼時候傳參?1.當只使用不修改實參變數的值,傳實參變數名 2.當使用即修改實參變數的值,傳實參變數的位址 關鍵字 register static extern const typedef 1 c語言中free函式是如何確定要釋放多少記...

今天是蘇嵌嵌入式Linux實訓 第六天

今天是蘇嵌嵌入式linux實訓 第六天 1 c語言中free函式是如何確定要釋放多少記憶體空間的?linux裡面glibc在分配記憶體的時候會在記憶體塊的位址前面的4個位元組出存放記憶體塊的大小 2 static什麼時候使用?區域性靜態變數 在區域性變數之前加上關鍵字static,區域性變數就被定義...