嵌入式c第四次作業

2021-10-19 04:54:43 字數 2110 閱讀 1347

一,結構體的引數傳遞

首先結構體做函式引數有三種傳遞方式:

一是傳遞結構體變數,這是值傳遞,二是傳遞結構體指標,這是位址傳遞,三是傳遞結構體成員,當然這也分為值傳遞和位址傳遞。

以傳引用呼叫方式傳遞結構比用傳值方式傳遞結構效率高。以傳值方式傳遞結構需要對整個結構做乙份拷貝。

下面看乙個列子,student結構體中包含該學生的各種資訊,我們在change函式中對其進行部分修改,再在主函式中輸出其結果

可以看到最終輸出的值並未改變。。。

可以看到,通過位址傳遞修改了結構體內的資料

用&stu做實參,&stu是結構體變數stu的位址。在呼叫函式時將該位址傳送給形參p(p是指標變數)。這樣p就指向stu。

在change函式中改變結構體內成員的值,在主函式中就輸出了改變後的值

這個類似於單一變數的傳遞,這裡也沒必要說了,當然是位址傳遞才能修改。

把乙個完整的結構體變數作為引數傳遞,要將全部成員值乙個乙個傳遞,費時間又費空間,開銷大。如果結構體型別中的成員很多,或有一些成員是陣列,則程式執行效率會大大降低。在這種情況下,用指標做函式引數比較好,能提高執行效率。

二,檔案的包含

檔案包含有兩種格式,分別是:#include "file" 和 #include

這兩格式的區別在於:

1.使用雙引號,系統首先到當前目錄下查詢被包含的檔案,如果沒找到,再到系統指定的"包含檔案目錄"(由使用者在配置環境時設定)去找。

2.使用尖括號:直接到系統指定的"包含檔案目錄"去查詢。

通常使用雙引號比較保險

三,大小端和位元組序

在幾乎所有的機器上,多位元組物件都被儲存為連續的位元組序列,物件的位址為所使用位元組中的最小位址。

位元組序即為多位元組物件儲存在記憶體中的位元組順序,有兩種不同的儲存方案:大端法和小端法。現代的處理器大多為雙端法,大小端都支援,可以配置稱大端法或者小端法。

最高有效位元組在最前面的方式稱為大端法,例如假設變數x型別為int型,位於位址0x100的地方,其16進製制值為0x12345678,位址範圍為0x100到0x103位元組。

最低有效位元組在最前面的方式成為小端法,這正好和大端法相反

位域是指資訊在儲存時,並不需要占用乙個完整的位元組, 而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為"位域"或"位段

"。所謂"位域"是把乙個位元組中的二進位劃分為幾 個不同的區域, 並說明每個區域的位數。每個域有乙個網域名稱,允許在程式中按網域名稱進行操作。 這樣就可以把幾個不同的物件用乙個位元組的二進位制位域來表示。

函式指標是指向函式的指標

變數。 因此「函式指標」本身首先應是指標變數

,只不過該指標變數指向函式。這正如用指標變數可指向整型變數

、字元型、陣列

一樣,這裡是指向函式。如前所述,c在編譯

時,每乙個函式都有乙個入口位址,該入口位址就是函式指標所指向的位址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是大體一致的。函式指標有兩個用途:呼叫函式和做函式的引數

嵌入式C學習第四次任務

include include using namespace std struct student void outcome student s 引用傳遞不會進行記憶體重新分配,因此和指標傳參類似,效率很高 void outcome student s 引用傳參 void outcome stud...

嵌入式第四次課堂總結

偵錯程式 gdb 1.gnu計畫的工具 核心除錯kgdb 2.程式的錯誤分類 編譯時錯誤 語法錯誤 執行時錯誤 記憶體錯誤,邏輯錯誤 3.gdb的功能 執行程式 設定斷點 檢視變數的值 4.gdb的用法 hello.c gcc g hello.c o hello gdb hello 可執行檔案 gd...

c 第四次作業

專案一 1 1000的偶數的和 檔名稱 mc1 作 者 尚文宇 完成日期 2016 年 4 月 21 日 版 本 號 v1.0 對任務及求解方法的描述部分 略 輸入描述 略 問題描述 1 1000的偶數的和 程式輸出 問題分析 演算法設計 includeusing namespace std int...