課堂筆記2

2021-08-15 00:24:10 字數 2990 閱讀 4087

一、makefile

make命令執行時,需要乙個makefile檔案,以告訴make命令需要怎樣去編譯和鏈結程式。

格式:target(目標):dependency(依賴)

(tab字元)command(命令)

例:hello:hello.c

gcc hello.c -o hello

通過hello.o和print.o檔案生成hello,使用變數方便程式設計。

target = hello

object = hello.o print.o

$(target):$(object)

gcc $(object) -o $(target)

hello.o:hello.c

gcc -c hello.c -o hello.o

print.o:print.c

gcc -c print.c -o print.o

make只能編譯最新檔案:

make clean

.phony:clean     //宣告clean為偽目標

clean:

rm *.o hello

用gcc編譯多個檔案:gcc hello.c print.c -o hello

二、gdb除錯工具

編譯時使用gcc xx.c -o xx -g

gdb xx進入除錯

(1)l+行號:顯示從該行開始的十行

(2)加斷點:b 行號或者 break 函式名

檢視斷點資訊:info b  刪除斷點:delete b

(3)執行:run/r

(4)print x列印變數值

(5)continue繼續向下執行

return退出函式

quit/q退出

三、shell指令碼

檔案字尾為.sh

加固定格式標頭檔案:#!/bin/bash 或者 #!/bin/sh

例:指令碼輸出helloworld、hello、引數

#!/bin/bash

tmp="hello"

echo "helloworld"

echo $

echo "first $1"

echo "second $2"

echo "all $*"

echo "sum $#"

echo為輸出命令,echo 「hello」> xx     (>表示覆蓋,>>表示追加)

指令碼在執行前不需要編譯為二進位制檔案,執行前需要用chmod修改許可權,執行./xx.sh +引數1 引數2……

$*:輸出所有引數,$#:輸出引數總數

指令碼中注釋用#

例:在指令碼中利用迴圈建立目錄、檔案

#!/bin/bash

for dir in $1 $2 $3 $4               #迴圈固定格式

domkdir $dir                            #建立目錄

cd $dir                                  #進入目錄

touch $dir                             #建立檔案

echo "hello $dir" > $dir        #在檔案中寫入hello xx

cd ..                                       #返回上一層

done

判斷是檔案還是目錄:

#!/bin/bash

path = $1               #$1路徑在執行時寫入

if [ -z $1 ]; then       #判斷是否輸入了命令列引數,exit退出整個指令碼

echo "error"

exit fi

if [ -d $1 ]; then

echo "dir"

elif [ -f $1 ]; then

echo "file"fi

指令碼中的選擇 switch case

判斷從鍵盤輸入的是數字、小寫字母、大寫字母還是特殊字元:

#!/bin/bash

read key

case "$" in

[a-z] ) echo "upperletter";;

[a-z] ) echo "lowerletter";;

[0-9] ) echo "number";;

* ) echo "error";;

esac

需要修改export lang=c,改變編碼順序。

在指令碼中輸出helloworld:

#!/bin/bash

file = "hello.c"

target = "hello"

echo "#include " > $file

echo "int main()" >> $file

echo 'printf("helloworld\n")' >> $file

gcc $file -o $target

./$target

如果使用cat > $file << eof,可以不使用echo

四、基本資料型別

常見資料型別占得位元組數:int 4      short 2     long 4     char 1     float 4     double 8

unsigned int型別整數範圍大於int型別,相同型別的資料才能進行運算。有符號整型和無符號整型運算,要將有符號型別用補碼形式轉化成無符號整型再進行運算。乘法要考慮越位問題。%u為無符號整型

volatile:防止編譯的時候被優化

\n 換行  \t空乙個tab鍵距離

條件運算子:(a>b)? a : b

區分++i,--i和i++,i--

int a=4;

a+=a++;  (a=9)

a+=++a;  (a=10)

++a+=a;  (a=10)

++a+=a++;  (a=11)

++a+=++a;  (a=12)

++a最先執行

課堂筆記2(亂)

select it.iname 商品名稱,itc.cname 商品類別名稱 from item it join itemcategory itc on it.cid itc.id it 為item的別名 提高執行速度,itc為itcategory的別名。商品名稱為iname的別名,列的別名,影響執行...

c 課堂筆記(2)

include include includeusing namespace std int main 1計數控制的迴圈 2條件控制的迴圈 1當型迴圈結構,表示當條件p成立 為真 時反覆執行a操作,直到條件p不成立 為假 時迴圈結束 2直到型迴圈結構,表示先執行a操作,再判斷條件p是否成立 為真 若...

CSS 課堂筆記2

css 層疊樣式表,是給標籤 html 新增樣式的 鍵對值 屬性 屬性值 備註 html超文字標記語言,是標記語言,不是程式語言,說白了就是標籤。標籤 標籤名 一 文字的樣式 text 1 顏色 color red 2 文字對齊方式 text align left 左對齊 text align ce...