指令碼 C語言筆記

2021-08-15 00:25:14 字數 3407 閱讀 5601

1.基本資料型別

整型int

整數,在目前絕大多數機器上佔4個位元組。tc環境中是2個位元組

單精度實型float

單精度浮點數,一般是4個位元組長

雙精度實型double

雙精度浮點數,一般是8個位元組長

字元型char

字元,一般是1個位元組長

用來表示256個ascii字元,或者0~255的整數

列舉型enum

2.const,volatile修飾變數的時候表示什麼意思?

const修飾唯讀變數,不能通過變數的值去修改對應記憶體的資料;volatile是防止編譯時被優化

3.常量與變數

常量是一種在程式中保持固定型別和固定值的資料。編譯系統從資料形式上可以區分(除列舉型別外)。常量分為:

(1)整型常量(2)實型常量(3)字元常量(4)字串常量(5)列舉常量

變數是在程式執行過程中可以改變。

4.轉義字元:\n表示換行,\t表示水平製表

5.字元型資料:c規定:在每乙個字串常量的結尾加乙個"字串結束標誌",以便系統據此判斷字串是否結束。c規定以字元『\0』作為字串結束標誌。

6.各類數值型資料間的混合運算:

整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同型別的資料要先轉換成同一型別,然後進行運算.

(1)在進行賦值操作時,會發生型別轉換(2)將取值範圍小的型別轉為取值範圍大的型別是安全的,反之是不安全的

如果大型別的值在小型別能容納的範圍之內,則平安無事,但是,浮點數轉為整數,會丟失小數部分,非四捨五入;反之,轉換後的結果必然是錯誤的,具體結果與機器和實現方式有關。避免如此使用,好的編譯器會發出警告。

7.算術運算子

c的運算子有以下幾類:

(1)算術運算子 (+  -  *  /  %)    (2)關係運算子 (> <  ==  >=  <=  !=)    (3)邏輯運算子 (! &&  ||)

(4)位運算子   (<<   >>   ~   | ∧ &)      (5)賦值運算子 (=及其擴充套件賦值運算子)    (6)條件運算子 (?:)     

(7)逗號運算子  (,)      (8)指標運算子 (*和&)    (9)求位元組數運算子(sizeof)    (10)強制型別轉換運算子( (型別) )  

(11)分量運算子(.->)    (12)下標運算子([ ])     (13)其他 (如函式呼叫運算子())

8.makefile(編譯工程)

target : depengency

( tab 字元)  command 

例項 

第一步.

vim makefile 

第二步.  

hello : hello.o

(tab 鍵 空4格)

gcc hello.o -o hello

hello.o : hello,c

(tab gcc -c hello.c -o hello.o) //可刪,隱含規則

<=>

target = hello

object = hello.o, print.o

$(target) :$(object)

(tab) gcc

$(object) -o $(target) //只有 command 需要縮排

$(object) : hello.c

print.o : print.c

第三步.make

print.c

#include

void print(char *s)

make clean //清除檔案

例項clean :

(tab) rm *.o hello //清除 所有 .o 

檔案 以及hello檔案

.phony :clean //防止存在同名 clean 檔案

9.gdb

gcc test.c -o test -g //加上 -g 可使用除錯工具

gdb test // gdb + 檔名

l // list 列出10行 // 一次顯示10行 ,l + n 從 n 行顯示

b // break b 17 //17 行設定斷點 b main // 在main 處設定斷點

info b // 查詢斷點

delete n // 刪除第 n 個斷點

r // run 執行

n // next 下一行 // 不進入函式

s // step 下一步 // 可進入函式執行

c // continue 繼續

return // 返回 在函式中可使用,從當前函式返回

q // 退出

10.shell // 命令解析器 .sh // 指令碼

#!/bin/sh //命令的集合

tmp = "hello"

echo (輸出) echo "hello" > a // 覆蓋 >> //追加

echo $

mkdir $1 // 建立第乙個引數的同名目錄

./shell.sh  1  2  3 //追加引數1 2 3(命令列引數)

#在指令碼內為注釋符號             cat + 檔案  // 顯示

for dir(變數) in $1 $2 $3 $4 $5    //  命令後+ 空格 do

mkdir

$dir

cd$dir

touch 

$dir

echo "hello $dir" > 

$dir

cd ..

done

注意: 賦值『=』,兩邊都不能空格,否則不變色,會有報錯

path.sh //判斷所給 是檔案還是目錄

#! /bin/bash

path = "/home/155/shell/test.sh" || 空格 一定要空

if [ || -d $path || ]; || then

echo "dir"

elif [ || -f $path || ]; || then

echo "file" fi

if [ || -z $path || ]; || then

echo "error"

exit fi

#! /bin/sh

read key (c 內的scanf,從鍵盤輸入)

case "$" in

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

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

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

* ) echo "error" ;;

esac

注意 : shell 與 c有差別 可用 『ecxport lang c』進行修改

C語言呼叫SHELL指令碼

在linux 環境下shell指令碼具有非常強大的功能!使用shell可以很方便的使用和管理linux系統,最近學習了一點shell知識,所以一直在 想要是可以在c c 中呼叫shell指令碼那該有多好啊!因為使用c c 要幾百行 才能搞定的!使用shell只要短短十幾行就可以輕鬆搞定!includ...

C語言筆記(C )

結構體,類在定義時沒分配空間,用其定義變數時才會分配空間,所以c語言在的結構體不用有靜態型別,因為靜態型別在資料段,而如果在函式用用結構體定義變數,這變數在棧中,這樣就衝突了,但在c 中有相應的機制處理些問題。c 的cin.get 不讀取緩衝區中的回車字元,而cin.getline 將緩衝區中的回來...

C語言 C語言複習筆記

為什麼要學c語言?1972年,美國貝爾實驗室的 d.m.ritchie 在b語言的基礎上最終設計出了一種新的語言,他取了bcpl的第二個字母作為這種語言的名字,這就是c語言。總所周知,任何東西的盛行都只是乙個階段,語言也是如此。但是,c語言是個例外,乙個矗立了半個世紀的語言,其中好壞,我想應該不難了...