1. 程式人生 > >C語言基礎----基礎知識

C語言基礎----基礎知識

基礎C語言----基本知識

如何在虛擬機器上寫程式碼

1、開啟終端(Ctrl+Alt+t),mkdir day01 建立目錄,cd 目錄名。
2、vim file.c,進入vim文字編輯器,輸入i,進入程式碼編輯模式。
3、編寫程式碼,Ctrl+x執行程式碼,Ctrl+z儲存退出。
4、vimtutor

第一個C語言程式:

#include 功能是把標頭檔案匯入到當前程式碼 ( stdio startand in out head )
#include <stdio.h>

main 是C程式碼的執行入口,有且只能有一個。
int main()
{
printf和scanf是用來除錯程式碼的,它模擬從介面獲取資料、顯示資料到介面
\n是一種轉義字元

,很多不能正常顯示的檔案都會有一個替換的轉義字元
\r (回到行首)
\b (退格)
\\ ( \ )
%% (%)
\t (製表符)
C語言中程式碼以分號為結束標誌,; 有特殊含義。
printf(“hello world!\n”);

// 把函式的執行結果返回給呼叫者,結束函式的執行。
return 0;

// C語言中{ }對程式碼進行劃分管理區域

程式設計基礎知識

編輯器:型別記事本一樣的用來編寫程式碼的工具。
編譯器:負責把程式碼檔案翻譯成可執行程式的軟體。
gcc 是GNU社群為編譯Linux核心開發的一款編譯器。
gcc code.c -> a.out

編譯器是如何把C程式碼翻譯成可執行程式的:
1、預處理
把程式碼中以#開頭的指令翻譯成標準的C程式碼,生成預處理檔案。
gcc -E code.c -o code.i
2、彙編
把預處理檔案翻譯成彙編檔案
gcc -S code.i -> code.s
3、編譯
把彙編檔案翻譯成目標檔案(二進位制)
gcc -c code.s -> code.o
4、連結
把若干個目標檔案合併成一個可執行檔案
gcc a.o b.o c.o -> a.out

C語言的資料:

為什麼要把資料進行分類:
1、現實社會中的資料是自帶類別屬性。
2、對資料進行分型別可以節約儲存空間、提高執行效率。

C語言中資料分類兩人大類自建(程式自己設計的,如:結構、聯合、類)和內建(C語言自帶)。

整型:

char、short、int、long、long long
有符號 signed : 它儲存資料的二進位制位中最高位用來表示正負。
無符號 unsigned :它的所有的二進位制位都用來儲存資料,只能表示正數。

浮點型:

float 單精度
double 雙精度
long double 高精度
浮點型資料採用的是科學計數,可以表示較大範圍的資料,但是精確度有限。
浮點型的資料由於格式特殊,所以運算的效率不高,程式設計時優先選擇整型。

布林型別:C語言中沒有真正的布林型別,若使用必須新增標頭檔案stdbool.h

bool true false

字元型:字元其實就是符號或圖案,在計算機中是以整數形式儲存的,當需要顯示時會根據ASCII表中的對應關係,顯示相應的符號。

‘\0’ = 0
‘0’ = 48
‘A’ = 65
‘a’ = 97

變數:

儲存資料的容器,需要先定義後使用。
定義:型別 變數名;
注意:剛定義的變數預設值是不確定的,為了安全一定要初始化(養成良好的習慣)。

變數的取名規則(識別符號的取名規則):
1、只能由字母、數字、下劃線組成。
2、不能以數字開頭。
3、不能與關鍵字重名(32個關鍵字)。
4、儘量不要超過30個字元。
5、見名知義(功能+型別+作用域+…)。

C語言中通過使用佔位符的方式來告訴printf/scanf變數的型別。

變數的輸出:printf 型別 變數名

變數的輸入:scanf 型別 變數的地址=&變數名

sizeof 計算變數的位元組數。

練習:定義各型別的變數,使用scanf接收,使用printf顯示,使用sizeof計算變數的位元組數。

常量:

字面值常量(程式碼中能直接使用的數量:100,1000),不可被修改,儲存在一塊只有只讀許可權的記憶體中(程式碼段)。
設定字面值常量的型別:
預設是int(10)型別,或double(3.14)型別。
10u unsigned short
10U unsigned int
10u8 unsigned char
3.14f float
3.14l long double

運算子:

算術運算子:+ - * / %

/ % 除數不能為零,如果除數為零程式會提前死亡。
關係運算符:> < >= <= == !=
運算的結果是邏輯:true=1 false=0
==使用時常量放在左邊,變數放右邊。
num == 10;
10 == num; 防止出錯

10 < num < 100; 數學中[11,99],C語言中永遠為真。

自變運算子:++/–

可以讓變數的值自加1或自減1(只有變數才能使用)。
前自變:++/–num,立即有效。
後自變:num++/–,下一行程式碼才會生效。
一行程式碼中不要多次使用自變運算子。

邏輯運算子:&& || !

在運算之前會把運算物件轉換成邏輯值:零值轉換成假,非零值轉換成真,然後再對邏輯值進行運算,得到的結果也是邏輯值。
A && B 一假即假
A || B 一真即真
!A 對A的值求反

!比&&、||運算級別要高(單目運算子的級別都比較高)。先後順序 (not and or)
&&、|| 具有短路特性,當左邊的值已經能確定表示式的結果,右邊的值則不再計算(注意思維誤區,還可以藉此形成精簡的分支結構)。
int num = 0;
num>0 && num–;

賦值運算子及擴充套件:= += -= *= /= …

num += 10 <=> num = num + 10;

三目運算子:[1] ? [2] : [3];

當1的值為真時執行2,否則執行3,類似if語句。
不能使用流程控制語句,因為畢竟是運算子,必須要有運算結果。

位元組數運算子:sizeof

1、sizeof不是函式而是運算子,而且是32個關鍵字之一。
2、只是推算表達的結果是什麼型別、佔多少個位元組(取最大的),而不計算表示式。

位運算子:& | ~ ^ << >>