C程式設計基礎day03

2021-08-21 03:34:34 字數 2570 閱讀 7294

機器語言——組合語言——高階語言

組合語言和硬體相關, 不同的硬體使用的指令集不同。 arm和x86就不同。移植性差。

高階語言不依賴硬體。編譯器將高階語言翻譯成組合語言,再翻譯成機器語言。

linux在當前環境執行可執行檔案要加./   如./a.out   

linux在絕對路徑下執行加斜槓即可  如 /home/edu/c_code/a.out

c語言由函式組成, 有且只有乙個main函式,程式執行先從main函式執行。main函式又系統自動呼叫,不需要人為呼叫。

windows下使用gcc需要在我的電腦環境變數中的path新增qt目錄下的bin, 使用gcc前先用gcc -v檢視gcc是否存在

0、切換碟符時無需cd  直接c:

1、進入**所在目錄  (使用絕對路徑時候不用去所**在的目錄)

2、dir檢視目錄資訊

3、gcc hello.c  預設在當前生成a.exe     gcc hello.c -hello 預設在當前生成hello.exe

4、執行在windows下無需./  可直接輸入a.exe或a來執行

gcc 是由gnu開發的程式語言編譯器

linux編譯的程式只能在linux下進行,windows編譯的程式只能在windows下執行。

linux的64位和32位不相容, windows的32位編譯後可以在64位執行, 但是64位編譯後不能在32位執行。

system函式

system函式的標頭檔案位

system的作用為在執行函式過程中,呼叫函式外部指令。用法system("外部指令");

同樣**int b=system(「./a.out」);加入a.out return 100,在不同系統平台下system的返回值b不一樣。c語言所有庫函式的呼叫,在不同平台下只能保證語法一致的,不能保證執行結果一致,所以c語言相容性不如想象的好。linux和unix發展離不開posix標準,但是windows支援比價差。 所以linux和unix相互相容較好,但是windows和linux/unix相容性較差。

為什麼windows的中文字元和linux中文字元相互傳輸時候會是亂碼。

windows預設支援的中文編碼gbk,gb2312,ansi

linux預設支援的中文編碼是utf-8

可以使用notepad將**源檔案格式建utf-8轉換為ansi格式消除亂碼

windows指令

mstsc -v username 遠端控制計算機

calc 計算器

mspaint 畫圖板

notepad 記事本

可以在**中使用system("calc");來呼叫計算器

windows下的圖形介面有兩個qt和mfc

qt建立工程路徑和名稱都不可以是中文

qt在ui中選擇按鈕,然後在按鈕中右鍵選擇「轉到槽」然後使用system函式呼叫外部應用,即可實現圖形介面。

vs在mfc中選擇按鈕,然後雙擊進入對應**,再新增system函式呼叫外部應用,即可實現圖形介面。

c語言編譯的4步驟

1、預處理:不檢查語法, 巨集定義展開,標頭檔案展開,條件編譯,同時將**中的注釋刪除。

gcc -e hello.c -o hello.i

2、編譯: 檢查語法,將預處理後的檔案編譯生成彙編檔案

gcc -s hello.i -o hello.s

3、彙編:將彙編檔案生成目標**(二進位制檔案)

gcc -c hello.s -o hello.o

gcc hello.o -o hello

ldd檢視linux下可執行檔案需要的動態庫ldd hello

windows下可以使用depends.exe來檢視某個軟體依賴的動態庫,直接把軟體拖到depends.exe即可。

交換檔案說明:我們通過vi寫檔案時候沒有儲存就關閉,會自動生成乙個.swp的交換檔案,這個交換檔案會儲存前邊我們沒有儲存的內容。

對於交換檔案.swp檔案下輸入r自動恢復,  d 刪除交換檔案,e直接編輯,.....

ls-alh會發現乙個隱藏檔案.swp。如果確認恢復過後就可以rm -rf刪除.swp檔案了.

暫存器是cpu內部的基本儲存單位。

執行程式時候,1、先將程式從硬碟載入到記憶體,2、 如果需要運算不能直接在記憶體中運算,如果需要運算會將記憶體中的資料載入到cpu中的暫存器進行運算。3、 最後將暫存器的計算結果移到記憶體中。 假如某些記憶體資料需要頻繁計算即頻繁和cpu暫存器互動時候,可以把這些資料放到cpu的快取中,便於提高速度。

cpu 通過匯流排和外部裝置互動,如果匯流排寬度是8位的,所以cpu的暫存器也是8位的。

64位的cpu架構執行32位的作業系統,這個作業系統仍舊是32位的。

離cpu內部最近的是暫存器,然後是快取, 然後是記憶體。

vs 可以先在某一行**設定斷點,然後除錯, 然後在除錯的按鈕下選擇視窗, 再選擇反彙編即可檢視彙編**。

vs中使用sacnf、strcpy、sprintf會產生c4996告警, 解決方法1:在首行新增 #define _crt_secure_no_warings

解決方法2:在首行新增 #define pragma waring(disable:4996)

通過vs或qt編譯**,必須新建專案或工程才可以編譯

python基礎程式設計day03

從來記錄文字資訊 表示方法 空字串的表示方式 非空字串的表示方式 hello hello hello hello 單引號雙引號的區別 單引號內部的雙引號不算結束符 雙引號內部的單引號不算結束符 三引號字串 作用 三引號內可以包括單引號和雙引號 三引號字串中的換行符會自動換成 n 轉義序列代表特殊的字...

c 基礎學習Day03

計算機語言和程式設計方法的發展day03 最初的計算機語言 機器語言 由二進位制 構成 計算機硬體可以識別 可以表示簡單的操作 例如 加法 減法 資料移動等等 組合語言 將機器指令對映為助記符 如add sub mov等 抽象層次低,需要考慮機器細節。高階語言 關鍵字 語句容易理解 有含義的資料命名...

day03 前端基礎

transform translate x,y x 表示向x軸正方向移動的距離 x表示向x軸反方向移動的距離 y 表示向y軸正方向移動 這裡的y軸正方向指的向下移動 y表示向y軸反方向 延y軸向上移動!示例 transform translate 300px,0px transform transl...