C語言入門了解

2021-10-25 06:18:02 字數 4892 閱讀 8560

·乙個程式由乙個或多個源程式組成,乙個源程式檔案中有且只有乙個main函式。包括預處理指令#include,全域性宣告,函式定義。

·函式是c的重要組成部分,包括函式首部和函式體。

·最重要的一點,也是我學習c++後搞混的,程式總是從main函式開始執行,沒有main函式是會報錯的。

·同時乙個良好的程式設計習慣應該包含注釋部分。

·首先程式是由演算法加資料結構這兩大類組成的,當然還有一些細節,宣告啊,注釋等。

·演算法分兩大類,一類是數值運算,一類是非數值運算演算法,而不管是什麼演算法,都是為了在一件事情中找到一定規律去做,按計畫好的去實現避免出

·有窮性,乙個演算法應該包含有限的操作步驟。

·確定性。演算法中每乙個步驟都應該是確定的。

·有零個或多個輸入。

·有乙個或多個輸出。

·有效性,演算法每乙個步驟都應該有效執行。

·順序結構

·迴圈結構

·選擇結構

·常量常量分為整型,實型,字元型,字串和符號常量。而字元常量中有一種轉義字元,以』『開頭,最常見的是』\n』,表示換行。符號常量例子#define pi 3.14

·變數變數必須先定義後使用。

·常變數

『const int a = 1;』

`識別符號

c語言規定識別符號只能由數字,字母或下劃線組成,數字不能開頭。

·分類型別

位元組數取值

int4

-231~(231-1)

unsigned int

40~(2^32-1)

short

2-215~(215-1)

unsigned short

20~2^16-1

long

4-231~(231-1)

unsigned long

40~(2^32-1)

沒啥就一樣

·float,double,long double

##4.選擇結構程式設計

這裡也沒啥就是if和switch,然後需要搞一下運算優先順序。

·關係運算子優先順序

<,>,<=,>=,==,!=,這裡前四種的運算優先順序相同且高於後兩種的運算優先順序。

·邏輯運算子優先順序

!高於&&高於||。

且非的運算優先順序是最高的,然後是算數運算子,到關係運算子,到&&和||,最後是賦值運算子。

·條件運算子

條件運算子有乙個條件表示式,由兩個符號?和:組成,必須一起使用,及表示式1?表示式2:表示式3

max=(a>b)?a:b  

//等價於

if (a>b) max=a;

else max=b;

//同樣也可以寫成

a>b?printf("%d",a):printf("%d",b)

處理一些需要重複的問題,可以選擇迴圈結構。

·while語句就是只要當迴圈條件表示式為真,就執行迴圈體語句。

#includeint main()   

printf("m=%d",m);

return 0;

}

·特點就是先無條件執行一遍迴圈體,然後判斷迴圈條件是否成立。

·for語句是用到最多的迴圈語句,一般形式是for(表示式1;表示式2;表示式3)下面接語句

表示式1:設定初始條件,只執行一次

表示式2:迴圈條件表示式,判斷是否迴圈

表示式3:迴圈調整語句

·break語句提前終止迴圈,也可以跳出switch語句。

·continue語句提前結束本次迴圈,不繼續走下面的程式,而不結束整個迴圈。

·陣列是一組有序資料的集合,陣列中每乙個元素都屬於同乙個資料型別,用乙個陣列名和下標來唯一的確定陣列中的元素。

·在定義是賦初始值。

int a[10]=;

·可以只給一部分賦值

·也可以賦值0,int a[10]=;或者int a[10]=

·也可以不指定陣列長度

#include int main()  

} }

printf("the sorted number:\n");

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

return 0;

}

·如果花括號內提供初值個數大於陣列長度,則報錯。如果初值個數小於陣列長度,則置賦值前面哪些元素,後面空的填\0,即空字元。

·c語言規定字串結束標誌,以字元\0作為結束標誌。如果字元陣列中存在字元,前九個都不是空字元,而第十個是\0,認為陣列中有乙個字串,有效字元九個。

·在向記憶體中儲存時,系統會自動在最後加乙個』\0』,那麼就有了下面這個

//等價於

//等價於

char c=;

//而不與下面這個等價

char c=;

//前三者長度為11,最後乙個為10

·字元陣列輸出不包括』\0』,『printf("%s",c)』。

·puts——輸出字串,其作用是將乙個字串(以\0結束)輸出到終端。『puts(str);』

`gets——輸入字串,從終端輸入乙個字串,得到乙個函式值。

·strcat——字串拼接,『strcat(str1,str2)』,將str2拼接到str1後面,str1必須足夠大。

·strcpy和strncpy——字串複製,『strcpy(str1,str2)』,將str2複製到str1中,從起始位開始,str1也需要足夠大。『strncpy(str1,str2,2)』,將str2中前2個複製到str1中。取代str1中前兩個字元。

strcmp——字串比較函式。『strcmp(str1,str2)』,將兩個字串從左至右比,若全部相同則字串相等,出現不同,以第乙個不同為準。結果由函式值帶回,相同0,str1>str2,返回乙個正整數,str1·vc中為int分配4個位元組,float四個位元組,char乙個位元組,記憶體區每乙個位元組有乙個編號,這就是位址,位址指向的是該變數單元,位址稱為指標。

·'i_pointer = &i;'表示將i的位址存放到i_pointer中,i的位址是2000,那i_pointer的值就是2000,這個2000是i的位址。這時i=3,那麼*i_pointer=3;*i_pointer表示i_pointer所指物件。此時,*i_pointer是指標,指向乙個位址,i_pointer是指標變數,存放位址的變數。

·型別名 * 指標變數名

『int * p;』

·初始化(這是定義加初始化,不是指標變數的賦值過程,區分!!)

『int * p = &a;』//定義指標變數p,指向a。

*定義時 指標變數前面的』*'表示該變數為指標型變數,指標變數名是p,不是』p』。

·乙個變數的指標包含兩個方面,以是以儲存單元編號表示的純位址,一是指向的儲存單元的資料型別。

###7.3 字串指標

·char *string = "hello world";  

等價於

char *string;

string = "hello world";

//把字串第乙個元素位址賦值給指標變數string,輸出的時候會自動加1。

·宣告

struct 結構體名

;//成員宣告需要有型別宣告,型別名 成員名

·在宣告同時定義變數

struct 結構體名

變數名列表;

·定義結構體陣列

struct 結構體名

陣列名[陣列長度];

·結構體指標

p指向乙個結構體變數stu。下面三種用法等價

- stu.num(stu.成員名)

- (*p).成員名

- p->num

·列舉宣告

enum [列舉名];

//列舉元素不能賦值

enum weekday;

定義變數

enum weekday workday;

// 列舉型別 列舉變數

workday = a;

·乙個檔案要有乙個唯一的檔案標識,檔案標識包括三部分:

檔案使用方式

含 義指定檔案不存在

r(唯讀)

開啟乙個已存在的檔案輸入資料

出錯w(只寫)

開啟乙個文字檔案寫入資料

建立新檔案

a(追加)

向文字檔案尾新增資料

出錯r+(讀寫)

開啟乙個文字檔案讀寫

出錯w+(讀寫)

開啟乙個新的文字檔案讀寫

建立新檔案

如果不能開啟檔案,fopen函式將帶回乙個出錯資訊,返回乙個空指標null。  

'if((fp=fopen("file","r"))==null)'

·關閉檔案 fclose(檔案指標);

·讀寫乙個字元

fgetc(fp)從fp指向的檔案讀入乙個字元

fputc(ch,fp)將字元ch寫到檔案指標變數fp所指檔案。

·讀寫乙個字串

fgets(str,n,fp)n是要求得到的個數,但實際只從fp所指檔案中讀入n-1個字元,最後加乙個』\0』,這樣得到字串共有n個字元,放到字元陣列str中。讀完前遇到』\n』或檔案結束符eof,讀入結束,但遇到的』\n』也將作為字元讀入,函式出錯返回null。

·格式化方法讀寫文字檔案

fprintf(檔案指標,格式字串,輸出列表);

fscanf(檔案指標,格式字串,輸出列表);

c 入門了解

c 入門 c 是乙個現代的 通用的 物件導向的程式語言,它是由微軟 microsoft 開發的,由 ecma 和 iso 核准認可的。c 是專為公共語言基礎結構 cli 設計的。cli 由可執行 和執行時環境組成,允許在不同的計算機平台和體系結構上使用各種高階語言。c 是由 anders hejls...

了解C語言

任何新的發現都是源於舊方法無法很好的解決當前問題,而後創新嘗試中產生。c的產生是由於乙個專案的失敗,專家們轉而尋找其它方式解決問題時應運而生。貝爾實驗室和麻生理工學院建立了乙個專案 multics工程,目的是創立乙個作業系統。他們試圖在乙個小硬體上創立乙個龐大的作業系統,但是最終交付的不是滿意。為此...

Go語言入門之 基本了解

2007年,受夠了c 煎熬的google首席軟體工程師rob pike糾集robert griesemer和ken thompson兩位牛人,決定創造一種新語言來取代c 這就是golang。出現在21世紀的go語言,雖然不能如願對c 取而代之,但是其近c的執行效能和近解析型語言的開發效率以及近乎於完...