



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、位操作:熟悉& | << >>操作。應聘嵌入式C開發的崗位會考這方面的知識。見實驗5。結構體 共用體如前面講的,作為函數參數和返回值,結構體是值傳遞。結構體變量之間可以直接賦值,結構體在初始化時才能整體賦值。C99里新的結構體初始化方法。初始化結構體的指定成員變量。見C primer plusP382struct bookchar a; int b; double c ; struct book surprise = .b=3 ;即初始化指定的成員變量b,其他成員變量的值賦值為0。在內核驅動代碼中會經常見到。指向結構體的指針及使用struct node int
2、data; struct node *next; node1;struct node *point=&node1; 內存模型nextdata 高地址 point - > node1此時,point指向node1。即*point和node1對應的是同一塊內存。(*point).data等價于node1.data對應的是同一塊內存。(*point).next等價于node1.next對應的是同一塊內存。即黃色背景的內存。point->next為什么這段代碼行得通:int offset= &( ( (struct book*) 0 )->b); /獲得成員變量b在結
3、構體的偏移量。等價于:struct book *ptr=NULL; int offset= & ( ptr->b) ; / &(*ptr).b ;編譯器維護關于每個結構類型的信息,指示每個字段的字節偏移。它以這些偏移作為存儲器引用指令中的移位,從而產生對結構元素的引用的代碼。結構體的各個字段的選取完全是在編譯時處理的。參考深入理解P166頁中的一個例子。程序對內存的訪問,都是先生成該內存的地址,再訪問該內存。結構體對齊,及填充結構體的對齊與填充C語言標準未嚴格規定該如何對齊,不同系統的對齊策略略有不同。參考深入理解P170數據對齊。linux策略:linux/IA32 (
4、Intel Architecture 32)下,基本類型按其占用字節大小對齊。(即該類型變量的首地址能被sizeof(類型)整除,基本類型是指泛整形和浮點類型)。結構體按其最大成員變量的對齊規則對齊。若結構體按n個字節對齊,那么結構體的大小也要能被n整除。結構體內的成員按上圖的方式對齊。struct S int a; char b; ; 該結構體按其最大成員int的對齊規則對齊。結構體struct S 按4個字節對齊,即它的首地址和大小必須都能被4整除。因為有對齊的要求就出現了內存填充(空著若干個字節,不使用)。Ai c j d結構總大小結構體對齊要求0 4 8 12164Bi c d j結構
5、總大小結構體對齊要求0 4 5 8124Cw c結構總大小結構體對齊要求0 6102Dw c結構總大小結構體對齊要求0 8204Ea p結構總大小結構體對齊要求0 323643.42a b c d e f g h結構總大小結構體對齊要求0 4 8 16 20 24 28 36404如何盡量避免填充帶來的分析影響:結構體定義按成員對齊規則從大到小書寫,這樣填充只會在尾部填充。當然,邏輯關系的考慮也很重要。位域:整形類型(一般用unsigned int)不能對結構體里的位字段取地址。判斷一個char ch=0x12字節內位序共用體:首地址對齊。判斷系統是否為大端指向函數的指針及庫函數的使用:exi
6、t atexitC語言495個問題1.36 4.12枚舉類型的使用:對一類宏的整體定義。struct weekSunday, ;使用庫函數進行文件操作:緩沖區設置函數,文件操作庫函數的使用。學習對這些函數的使用時,請同學們參考apue第五章,這里會告訴大家函數的優點、缺點。比譚浩強的書描述要準確。文件流:是全緩沖的。可以使用fseek進行位置移動。標準輸入輸出流:是行緩沖的。不可以使用fseek等移動讀寫位置標準錯誤輸出流:是不緩沖的。不可以使用fseek等移動讀寫位置。P110標準庫函數區分文本文件和二進制文件。但在linux系統里并不對這兩種文件區分,所以,在linux環境下,指定字符b作
7、為type的一部分實際上不起作用。P113const、volatile等限定符restrict:是c99才支持的,形參指針用restrict修飾的函數,告訴編譯器在該函數內只通過這一個指針引用他所指的內存。這樣,編譯器就可以對該指針的操作進行代碼優化。編譯時需要在gcc后面加 -std=c99volatile:用該符號限定變量,告訴編譯器每次使用到該變量值的時候,都要從存儲它的位置重新取它的值。對于那些值容易變化的變量,需要加這個限定符。通常用在多線程編程中,嵌入式的硬件寄存器。restrict和volatile都是為了方便編譯器進行代碼優化。volatile int i=3; movl $3 -4(%ebp) ;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025朝花夕拾閱讀心得體會(20篇)
- 農村紅利專項管理制度
- 試用期工作自我鑒定(30篇)
- 信息系統監理師考試資源整合及試題答案分享
- 語文教師期末成績分析總結與反思(17篇)
- 數據庫錯誤日志分析方法試題及答案
- 員工食堂餐飲服務合同
- 鄉村農業生態建設合同
- 計算機三級嵌入式技能考試試題及答案
- 理論結合實踐公路工程考試的有效復習法試題及答案
- PHPstorm激活碼2025年5月13日親測有效
- 2022年高考地理試卷(天津)(解析卷)
- 《ISO 37001-2025 反賄賂管理體系要求及使用指南》專業解讀和應用培訓指導材料之4:6策劃(雷澤佳編制-2025A0)
- T-CSTM 00290-2022 超高性能混凝土檢查井蓋
- 2025年2月21日四川省公務員面試真題及答案解析(行政執法崗)
- 球團機械設備工程安裝及質量驗收標準
- 餐廳刀具使用管理制度
- 安全微課考試試題及答案
- 實施《保護世界文化與自然遺產公約》的操作指南
- 混凝土路面施工勞務合同
- 數字修約考試題及答案
評論
0/150
提交評論