學習筆記 Linux C程式設計實踐

2021-07-23 08:45:54 字數 2494 閱讀 9472

每天乙個linux命令

學習了 慕課網:linux c語言程式設計基本原理與實踐

簡短的記一下筆記:

#inlcude先搜尋include環境變數的路徑

#inlcude"file.h"先搜尋當前目錄

make工具可以把大型專案分成若干模組兒

gcc main.c -o main && ./main可以同時執行兩條命令,

僅當&&前面返回0時,&&後面的命令才執行;

echo &?可以檢視程式是否執行成功(return 0)

main(int argv, char* argc)引數

linux c語言 標準輸入流 / 輸出流 / 錯誤流(檔案i / o)

//printf("str");

fprintf(stdout, "str");

//scanf("%d", &value);

fscanf(stdin, "%d", &value);

//當return !0;

fprintf(stderr, "errstr");

return

1;//返回非0的數代表程式執行出錯

i/o重定向:

0代表標準輸入

1代表標準輸出

2代表便準錯誤

//從stdin重定向

$ ./main.out

0< input.txt //0可不寫

//從stdout重定向

$ ./main.out

1 > output.txt //覆蓋寫。1可不寫

$ ./main.out

1 >> output.txt //追加寫。1可不寫

//從stderr重定向

$ ./main.out

2 > error.txt

在理解i/o重定向的基礎上,開始理解管道的原理及應用

用**舉例:

$ ls /etc/ | grep ab // etc是linux預設配置檔案的存放目錄。
管道的意思就是,把ls /etc/的輸出作為grep ab的輸入。

利用這個原理,可以使用linux中的各種小工具(命令列)組合起來編寫一些更實用的工具。

linux c語言指標與記憶體

gdb除錯工具:

start單步除錯

p是print的縮寫,可以列印變數的值。

n是next的縮寫,表示執行當前行並跳到下一行**。

s表示跳進當前行的函式內,f表示跳出函式。

x/5d 0xffffffffffdd 表示從指定位址列印連續5個變數的值

指標:

#include

int main()

第8行:可以執行,但有極大的安全隱患,一旦輸入的字元數超過了預先為其分配的棧記憶體空間(6位元組),會覆蓋棧中其它資料,結果不可控。

第9行:這條語句會出錯,因為str2指向乙個字串常量,這個字串常量儲存在記憶體空間中的**段,不允許程式更改。

第10行:同第8行。

linux c語言結構體

編譯預處理:hello.c -> hello.i

$ gcc -e hello.c -o hello.i其中-e控制預處理結束即停止。

在預處理階段會進行「巨集」的處理,包括對「巨集函式」的處理:

#include

//定義乙個巨集函式,引數不必指定型別

#define add(a, b) (a + b)

int main()

結構體指標:

struct node;

int main()

; struct node *p = &node_1;

//(*p).name <=> p->name <=> node_1.name

printf("%s\n", (*p).name);

}

union data;

int main()

struct data;

/*該結構體占用空間為12位元組,是所有成員中所佔的最大空間(int佔4位元組)的整數倍,所以c後不必填充位元組。否則填充至最大成員所佔空間大小的整數倍。*/

遞迴原理

注意與遞推區別:

遞迴是從n到1

遞推是從1到n

嗯差不多就到這啦~

linux C程式設計學習筆記(一)

1.新增檔案 touch 檔名,刪除檔案rm 檔名 2.新增資料夾 mkdir 資料夾名 3.新增並編輯檔案 vi vim 檔名 4.進入 下一層以下的 資料夾 cd 路徑名 5.回到home目錄 cd 6.當前路徑 pwd 7.執行檔案 下一層以下的 路徑 檔名,如果是要執行當前資料夾下的檔案,路...

Linux C程式設計 學習筆記4

指向字串的指標 在c語言中,訪問乙個字串有多種方法 可以用字元陣列存放乙個字串。char string linux c printf s n string 注意是 s string是乙個字元陣列名,它同時也是該字元陣列的首位址,即linuxc這個字串的首位址。同理char p linux c pri...

Linux C 多執行緒程式設計學習筆記

includedefault 1 thread noexcept initialization 2 template explicit thread fn fn,args args copy deleted 3 thread const thread delete move 4 thread thr...