·乙個程式由乙個或多個源程式組成,乙個源程式檔案中有且只有乙個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的執行效能和近解析型語言的開發效率以及近乎於完...