Liunx系統下c語言的學習

2021-10-23 18:23:56 字數 2822 閱讀 9812

基本語法

基本字符集

資料型別

常量與變數

運算子與表示式

資料型別的轉換

環境變數是什麼?簡單來說就是制定乙個目錄,執行軟體的時候,相關的程式將會按照該目錄尋找相關檔案。設定變數對於一般人最實用的功能是不用拷貝dll檔案到系統目錄中,而path這一系統變數就是系統搜尋dll檔案的一系列路徑

makefile檔案中描述了整個軟體工程的 編譯規則和各個檔案之間的依賴關係

make工具可以將大型的開發專案分成若干個模組

第一行想要輸出的檔案不能一步到位,需要依賴與其他,因此在下面可以繼續這樣子寫。(所有依賴寫好之後,才會執行最終的檔案)

.c檔案:主要的每個**塊都在c檔案中

.**件:每個c檔案都跟著乙個**件。**件的作用是放著c檔案中函式的宣告,結構體的定義等

-c只進行預處理,編譯,和彙編:-c生成.o檔案,只編譯並生成目標檔案。

當我們想計算兩個數的和時

主檔案main.c

#include

#include 「sumfun.h」

int main()

標頭檔案sumfun.h:資料型別+方法+引數

int sumfn(int a,int b);

c檔案:sumfun.c

int sumfun(int a,int b)

markfile:

main.out:main.c sunfun.o

gcc main.c sunfun.o -o main.out

sunfun.o:sunfun.c

gcc -c sunfun.c

封裝乙個函式,直接使用命令就可以輸出

main.c

#include

int main (int a,char *b)stdin

程式的輸入:鍵盤輸入

stdout

程式的輸出:終端輸出

stderr

程式錯誤的輸出:錯誤輸出

重定向 >>

可以改變檔案輸出的方式,-

將檔案儲存在另乙個檔案中

利用linux所提供的管道符「|」將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。

原理:管道實際上在核心建立了乙個i node,和乙個指向它的固定大小核心緩衝區(可以理解為類似cache,但讀寫不分開),傳入的兩個檔案描述符就都指向這段緩衝區,這樣讀管道的0檔案描述符和寫它的1檔案描述符,就好像讀寫這個檔案一樣,實現了程序間的通訊。

存在的作用:

過濾檢視資料

檢視通訊狀態

檢視指定目錄下包含 'c』的內容:ls /home/xiao/home/ | grep c

檢視當前在執行的程序:ps -e

檢視當前在執行的程序包含』ssh』的程序:ps -e | grep ssh

為什麼32位系統是4g記憶體:

32位作業系統安裝在32位電腦中,32位電腦的cpu是32位,即位址匯流排是32根,cpu處理程式,發出指令給到位址匯流排(位址匯流排的作用是傳遞位址到定址空間——尋找位址)因為位址匯流排有32根,所以可以傳遞出2的32次方中結果,定址空間會根據這個結果在記憶體中尋找對應的編號(在開機的時候作業系統就會為記憶體中的每乙個位元組進行編號,這個標號即為位址),乙個編號對應的是乙個位元組所以可以尋找到2的32此方個位元組(即4g),所以該電腦只能尋找到4g記憶體,所以32位系統只「需要」管理4g記憶體,所以32位作業系統在開機的時候只會給4g記憶體編號,即通俗表達「32位作業系統只能管理4g記憶體」。

計算機最小的單位是位元組,一位元組等於8個2進製位

作業系統中的定址空間去尋找位址,兩個條件,存在這個東西,找這個東西的條件

作業系統的作用:分配記憶體,管理記憶體

變數的本質是記憶體,指標的本質是記憶體位址,指標是一種資料型別,變數名的本質就是乙個位址;

作業系統是如何管理記憶體的?

#include

int main()

​ int i =10;

​ int p = &i;//指標p指向i的位址,因此星p的值等於10;

int **p = &p;//將星星p看作為乙個星(星p)整體,&p等於i的值,然後星p=i=10,記憶體中沒有這個東西,因此會發生錯誤

p[3]=101;它的意思是說指標p往下走三個的記憶體是101;

強型別,弱型別,根據記憶體儲存的內容,如果根據記憶體可以判斷那麼就為強型別,否則為弱型別;c語言是弱型別,舉例:當我們編輯的時候,輸入,阿斯他媽a與65是不能夠相互辨別的,有資料型別限制的是靜態宣告,否則為動態宣告,

出現:linux 下 gdb沒有符號表被讀取。請使用"file" 命令當我們想調式**的時候,要使用-g選項,這個是指為了獲得有關除錯資訊,要用gdb進行除錯,必須使用-g生成二進位制可執行檔案

方法:1.刪除該程式原有的可執行檔案

​ 2.gcc -g example.c -o example.out

​ 這樣就可以了,用gdb呼叫example救木有問題鳥。

一開始:gdb +除錯的檔名 :gbd ./example.out

start:除錯開始

l:將**顯示出來,當顯示不完全的時候,回車即可

p +變數的名字:列印變數的值

n:往下走

s:進人函式

f +函式的編號:進人這個函式

bt:顯示棧

break +行號:打斷點

liunx系統下分割槽操作

在 dev 目錄下,每乙個驅動器以乙個單獨的裝置檔案來表現。通常最常見的是硬碟,對 於ide 硬碟一般可以有二到四個。這就是 dev hda dev hdb dev hdc 和 dev hdd,hd 是硬碟 的意思,a 則是代表第乙個裝置,hda1 中的 1 代表hda 的第乙個硬碟分割槽,依此類推...

Liunx在centOS系統下安裝ftp步驟

說明 要想完成以下所有操作,首先必須要將vsftp和ftp都安裝。使用命令 rpm qa grep vsftp 使用命令 yum list vsftpd 使用命令 yum install vsftpd.i686 使用命令 service vsftpd start ps 使用命令 netstat pa...

Linux系統下的C語言學習筆記(五)

分支語句可以實現選擇的效果 多選一 1.1 if關鍵字可以用來編寫分支,編寫if分支之前最好先畫乙個 有可能同時出現的多個選擇不可以包含在乙個分支裡。如果if分支裡必須做出選擇就可以省略最後一組語句的邏輯表示式和if關鍵字。1.2 if分支裡前面的語句先進行選擇,選擇不成功才輪到後面的語句進行選擇,...