C語言雜散問題

2021-08-01 21:37:41 字數 1748 閱讀 3699

作業系統其實就是類似於人類社會一樣的軟體系統,作業系統本身並不直接生產價值,他的主要任務是管理資源,並為應用程式提供服務,作業系統既是管理者,也是服務者。

應用程式和作業系統之間通過api介面進行互相呼叫,應用程式需要使用系統資源的時候,通過api向作業系統發出申請,作業系統響應申請,以幫助應用程式執行功能。

某些時候,c庫函式可以完成,系統api也可以完成,用哪個都可以,根據實際需求進行選擇。

不同的作業系統,api是不同的,但是都能完成任務,只不過是完成任務呼叫的api不同,庫函式在不同作業系統下也不相同,但是相似程度會高一些,所以在乙個作業系統上編寫的應用程式不能在另外乙個作業系統上編譯執行

main函式是特殊的,是c語言程式的入口,linux中乙個新程式的執行本質上就是程序的建立和執行,程序是由其父程序fork出來的,所以main函式返回給了建立這個程序的父程序。父程序根據這個返回值判斷子程序的任務執行結果成功還是失敗了。

main函式的引數,是由main函式所在程式的父程序傳遞過來的,main函式不傳遞引數也是可以的,之所以要傳遞引數是希望程式更加靈活,通過傳參來控制程式執行,我們通過argc和argv給main函式傳參,argc表示引數的個數,argv是字串陣列,用於儲存多個字串,每個字串就是給main函式傳的引數,父程序是通過exec函式族時,將引數傳遞給main的,但是引數傳遞要注意:

c語言屬於強型別語言,void表示不知道,還沒確定的型別,在描述一段還沒有具體使用的記憶體時,就需要使用void型別,例如malloc的返回值,void指向的記憶體是尚未確定型別的,因此我們後續可以將其轉換為其他具體型別

null最常用的場景是用於判斷乙個指標是否是乙個空指標,null不是c語言的關鍵字或者保留字,實質上是乙個巨集定義,是這麼定義的#define null 0,值是0x00000000,代表記憶體的0位址,在大部分作業系統中,位址為0的記憶體是不可以被隨便訪問的,一旦野指標指向這裡可以保證野指標不會造成危害,此時解引用野指標就會觸發段錯誤,可以幫助我們找到程式中的錯誤。

c語言是高階語言,而組合語言則是低階語言,組合語言和機器操作相對應,組合語言是cpu機器碼的助記符,使用匯編寫程式必須擁有機器的思維,不同的cpu設計時指令集差異很大,因此彙編程式設計時差異很大。

高階語言對低階語言進行了封裝,高階語言提供了更靠近人類思維的特性,使得人類可以按照自己的邏輯原理來程式設計,低階語言中需要好幾部才能實現的運算,在高階語言中只需要一步即可完成

順序結構反映了cpu的工作狀態,以時間軸來順序執行所有的**語句直到停機,選擇和迴圈語句之中,也是按照順序結構來執行的。

編譯器按照c檔案中從前到後逐行編譯的,所以編譯器也是順序執行的,這也表明了先定義後宣告的重要性。

在鏈結時,也是按照鏈結指令碼的指導下進行的,所以鏈結的順序是按照鏈結指令碼執行的。

利用偵錯程式進行單步除錯,例如dbg以及一些ide整合開發環境,適合於新手,比較直觀,但是限制性大,速度慢

在裸機中使用led或者蜂鳴器進行除錯,因為很多裸機並不支援偵錯程式

這種方式是最基本的除錯方式,應該是必須要掌握的,需要對程式很熟悉,有一定的程式設計水平,但是具有普遍性,幾乎在所有情況下都適用。

系統執行時在特定時候會列印一些除錯資訊,以供後續查詢問題,適合系統級或者大型程式的除錯

除錯資訊不能太多也不能太少,數量要適當,debug版本通常就是包含了程式除錯資訊的版本,在程式測試中發布,這些除錯資訊可以幫助開發人員定位出現問題的位置,我們通過條件編譯debug巨集來控制生成debug和release版本。

如果要輸出debug版本,就在條件編譯語句之前加上#define debug,要輸出release版本就去掉即可,

Linux Ubuntu 雜散問題總結

此帖用來不定期更新自己在ubuntu使用時遇到的小問題 目錄 1 解壓檔案時出現 cannot create symlink to.operation not supported 2 如何解決環境變數名衝突?3 ifconfig不顯示eth0 4 unable to locate package 1...

分布電容和雜散電容 雜散電容概述

安規電容是指用於這樣的場合,即電容器失效後,不會導致電擊,不危及人身安全.它包括x電容各y電容兩種型別,x電容是跨接在電力線兩線 l n 之間的電容,一般選用金屬薄膜電容 y電容是分別跨接在電力線兩線和地之間 l e,n e 的電容,一般是成對出現。基於漏電流的限制,y電容值不能太大,一般x電容是u...

雜散干擾解決辦法 最全乾擾解釋 雜散 互調 阻塞

干擾分為內部干擾和外部干擾。內部干擾 是指包括無源器件 主要是室分站,包括合路器,功分器,耦合器,天饋干擾 和 rru 即 有源器件 干擾。外部干擾 主要包括雜散干擾 互調干擾 阻塞干擾。下面來分別介紹三種外部干擾 雜散干擾 網上定義 雜散干擾主要是由於接收機的靈敏度不高造成的。發射機輸出訊號通常為...