《C清華大學鄭莉》課件_第1頁
《C清華大學鄭莉》課件_第2頁
《C清華大學鄭莉》課件_第3頁
《C清華大學鄭莉》課件_第4頁
《C清華大學鄭莉》課件_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

鄭莉教授簡介鄭莉是清華大學電子工程系教授,國家杰出青年科學基金獲得者,在機器學習和信息處理等領域做出了重要貢獻。她的研究成果在國際頂級期刊和會議上發(fā)表,成果豐碩。計算機發(fā)展歷程回顧從第一臺計算機誕生到如今的人工智能時代,計算機技術經歷了一個漫長而令人振奮的發(fā)展歷程。讓我們一起回顧這段豐富多彩的歷史,探索計算機技術如何推動人類文明的不斷進步。C語言發(fā)展歷程11970年代C語言誕生于貝爾實驗室21980年代C語言快速普及并成為主流編程語言31990年代C語言標準化并推出ANSIC標準C語言由丹尼斯·里奇于1972年在貝爾實驗室開發(fā),起初作為UNIX操作系統(tǒng)的系統(tǒng)編程語言。隨后C語言迅速普及并成為最廣泛使用的編程語言之一,直到1989年ANSIC標準的推出進一步推動了C語言的發(fā)展。如今C語言仍然是嵌入式系統(tǒng)、操作系統(tǒng)、驅動程序等領域的重要編程語言。C語言誕生背景計算機技術的發(fā)展20世紀50年代和60年代,計算機技術飛速發(fā)展,出現了更加強大和多樣化的計算機硬件系統(tǒng)。隨之而來的是對更加高級編程語言的需求。B語言的誕生在這種背景下,貝爾實驗室的肯-湯普遜和丹尼斯-里奇于1972年開發(fā)出B語言,為創(chuàng)造C語言奠定了基礎。C語言的誕生B語言的局限性逐漸顯現,于是貝爾實驗室的丹尼斯-里奇在1972年進一步開發(fā)出C語言,使其成為一種更強大、更靈活的編程語言。廣泛應用普及C語言憑借其簡潔性、高效性和可移植性,迅速在計算機領域廣泛普及和應用,成為最常用的編程語言之一。C語言主要特點高效C語言是一種編譯型語言,可以生成高度優(yōu)化的機器碼,執(zhí)行效率很高。靈活C語言提供了豐富的語法和靈活的內存管理功能,可以用于編寫各類復雜系統(tǒng)??梢浦睠語言程序可以在不同硬件平臺和操作系統(tǒng)上運行,具有很好的可移植性。低級編程C語言在底層硬件和操作系統(tǒng)中廣泛使用,是一種典型的低級編程語言。C語言應用領域操作系統(tǒng)開發(fā)C語言是構建復雜操作系統(tǒng)的基礎,如Windows、macOS和Linux等。它提供了底層系統(tǒng)控制和內存管理的能力。嵌入式系統(tǒng)C語言廣泛應用于單片機和物聯(lián)網設備的固件開發(fā),確保硬件設備能夠可靠、高效地運行。數據庫內核數據庫管理系統(tǒng)的核心組件,如存儲引擎和查詢優(yōu)化器,通常是使用C語言開發(fā)的,以保證高性能和可靠性。C語言基礎語法深入探索C語言的基礎語法要素,包括變量和常量、數據類型、運算符和表達式、順序結構程序設計、分支結構程序設計以及循環(huán)結構程序設計。掌握這些核心知識是學習C語言編程的基礎。變量和常量變量定義變量是可以被賦予、修改和讀取的數據項。它代表存儲在內存中的值,在程序運行時可以動態(tài)改變。變量名稱遵循命名規(guī)則,如使用有意義的標識符。常量定義常量是在程序中不能被改變的值。常量可以在程序編譯時被定義,也可以在運行時用宏定義。常量可以是數值型、字符型或枚舉型。內存分配變量和常量在內存中占用一定的空間。不同數據類型的變量和常量所占據的內存空間大小不同。合理的內存管理有助于提高程序的效率和性能。數據類型基本類型C語言提供了基本的整型、浮點型和字符型數據類型,滿足日常編程需求。它們具有固定的存儲空間和取值范圍。構造類型C語言允許用戶自定義數組、結構體和聯(lián)合體等復雜數據類型,實現更靈活的數據結構。指針類型指針是C語言的核心概念之一,用于管理內存中的數據地址,支持動態(tài)內存分配等高級功能。運算符和表達式算術運算符包括加、減、乘、除、取模等基本運算符,用于數值計算。邏輯運算符如與(&&)、或(||)、非(!)等運算符,用于布爾邏輯判斷。賦值運算符如=、+=、-=等,用于給變量賦值。關系運算符如大于(>)、小于(<)、等于(==)等比較運算符。順序結構程序設計1順序執(zhí)行程序按照代碼編寫的順序逐行執(zhí)行2流程控制程序執(zhí)行的邏輯順序可以通過語句控制3效率優(yōu)化合理安排語句順序可以提高程序運行效率在順序結構程序設計中,代碼被逐行順序執(zhí)行,程序員可以通過語句控制語句的執(zhí)行順序,從而實現特定的功能和邏輯。通過優(yōu)化語句順序,程序可以更有效地運行,提高整體性能。分支結構程序設計1條件判斷使用if-else語句根據條件做出相應的選擇和決策,實現不同路徑的程序執(zhí)行。2多重選擇使用switch-case語句可以根據多個條件做出更精細的選擇和判斷。3嵌套結構可以在分支語句內部嵌套其他分支語句,實現更復雜的決策邏輯。循環(huán)結構程序設計for循環(huán)使用固定次數的循環(huán),用于計數和循環(huán)指定次數的任務。while循環(huán)只要滿足條件就一直執(zhí)行的循環(huán),適用于不確定循環(huán)次數的情況。do-while循環(huán)先執(zhí)行一次循環(huán)體,然后再判斷條件是否滿足的循環(huán)。確保循環(huán)體至少執(zhí)行一次。嵌套循環(huán)在循環(huán)中嵌套其他循環(huán),可以用于處理復雜的數據結構或多重條件。C語言函數函數是C語言中最基本的編程單元。它能夠封裝代碼邏輯,提高程序的復用性和可讀性。本章將深入探討函數的定義、調用、參數傳遞、局部變量與全局變量,以及遞歸函數等概念。函數的定義和調用函數的定義函數是一段完整的程序代碼,用于執(zhí)行特定的任務。它由返回類型、函數名稱、參數列表和函數體組成。函數的調用函數調用時,控制權會轉移到被調用的函數中執(zhí)行。調用函數時需要傳遞實參與形參相匹配。函數的返回函數可以返回一個值或不返回任何值。返回值通過return語句返回給調用函數。函數參數傳遞1值傳遞在調用函數時,將實參值復制給形參,形參的變化不會影響實參。這樣可以保護函數內部的數據。2地址傳遞將實參的地址傳遞給形參,函數內部可以直接操作實參的內存空間。這樣可以實現函數返回多個值。3數組傳遞將數組名作為實參傳遞給形參,形參可以直接訪問和修改數組元素。這樣可以提高函數的靈活性。4指針傳遞將指針作為實參傳遞給形參,函數內部可以間接訪問和修改指針所指向的內存空間。這樣可以更好地控制內存。局部變量和全局變量局部變量局部變量是在函數內部定義的變量,只在當前函數內部有效。它們在函數被調用時創(chuàng)建,函數執(zhí)行完畢后就會被銷毀。全局變量全局變量是在函數外部定義的變量,在整個程序中都可以訪問和修改。它們在程序運行期間始終存在。訪問范圍局部變量只能在定義它的函數內使用,而全局變量可以在整個程序中任意位置訪問。內存分配局部變量存儲在棧內存中,全局變量存儲在靜態(tài)內存區(qū)。這影響了它們的生命周期和訪問速度。遞歸函數自我調用遞歸函數能夠自我調用,通過這種方式重復執(zhí)行特定的算法或操作,直到滿足某種停止條件。問題分解遞歸函數擅長將復雜問題分解為更小的子問題,逐步解決,最終得出結果。效率提升對于某些問題,遞歸函數能提供更高效的解決方案,如計算階乘、斐波那契數列等。指針的基本概念指針是C語言中一個非常重要的概念。它可以直接訪問內存地址,提高程序的靈活性和效率。通過掌握指針的基本用法,我們可以更好地理解和使用C語言的核心特性。指針的基本概念指針的定義指針是一種特殊的變量,用于存儲另一個變量的內存地址。它讓程序可以間接操作內存中的數據。指針聲明聲明指針變量時需要使用指針類型,如int*p表示p是一個指向整型變量的指針。指針賦值通過賦值運算符可以將一個變量的地址賦給指針,如p=&x將把變量x的地址賦給指針p。指針與數組數組與指針的關系數組是一組連續(xù)的內存單元,而指針是一個保存內存地址的變量。數組名是一個指向數組第一個元素的指針。指針運算可以對指針進行加減運算,以訪問數組中的其他元素。每次加減的單位是所指向類型的字節(jié)數。指針數組指針也可以存儲在數組中,形成指針數組。這種方式常用于處理字符串數組或函數指針數組。動態(tài)內存分配動態(tài)內存分配的需求在程序運行時,需要根據實際情況動態(tài)分配和釋放內存空間,以應對不同大小和數量的數據。這種靈活性是靜態(tài)內存無法提供的。動態(tài)內存分配的方式C語言中,可以使用malloc()和free()函數動態(tài)分配和釋放內存。calloc()函數則可以初始化分配的內存空間。動態(tài)內存分配的優(yōu)勢動態(tài)內存分配可以根據需求靈活分配所需空間,避免內存的浪費或溢出,提高程序的效率和健壯性。動態(tài)內存分配的風險如果管理不當,動態(tài)內存分配可能導致內存泄漏和懸空指針等問題,需要程序員小心操作。指針與函數1指針參數傳遞在C語言中,可以使用指針作為函數的參數,實現數據的間接訪問和修改。這種傳值調用的方式更加靈活和高效。2函數返回指針函數可以返回指針類型,指向動態(tài)分配的內存空間或者靜態(tài)存儲區(qū)域,使用時需謹慎避免內存泄漏。3指針數組通過創(chuàng)建指針數組,可以靈活地管理多個指針變量,增強程序的擴展性和通用性。4回調函數把一個函數作為參數傳遞給另一個函數,在特定事件發(fā)生時調用,是指針在函數中的高級用法。指針與函數指針可以用來作為函數的參數和返回值,實現更靈活和高效的編程。通過指針,函數能夠直接操作和訪問外部變量,提供了豐富的功能性。結構體定義和使用結構體概念結構體是C語言中的一種復合數據類型,允許開發(fā)者定義包含不同數據類型的變量集合。結構體聲明使用struct關鍵字定義一個新的結構體數據類型,包含成員變量和成員函數。結構體初始化通過逐個賦值或使用花括號一次性初始化結構體變量的各個成員。結構體訪問使用成員訪問運算符"."來訪問結構體中的成員變量和成員函數。結構體數組1定義結構體數組可以使用結構體類型聲明一個數組變量,每個元素都是一個完整的結構體。2初始化結構體數組可以使用花括號逐個初始化數組中的每個結構體元素。3訪問結構體數組元素通過下標訪問數組中的每個結構體元素,再使用點運算符訪問元素中的成員。4結構體數組應用適用于處理大量相同類型的結構體數據,如學生信息管理、商品信息管理等。結構體指針靈活操作結構體通過使用結構體指針,可以動態(tài)地分配和訪問結構體內存,提高代碼的靈活性和效率。指針的優(yōu)勢結構體指針可以簡化復雜的結構體操作,減少不必要的內存復制,提高程序性能。指針訪問結構體通過結構體指針,可以直接訪問結構體成員,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論