C语言速成
C語言速成
- 編譯預處理
- 作用
- 基本類型
- 變量
- 函數
- 函數基本結構
- 主函數
- 子函數
- 運算符
- 關鍵字
- 常用函數/頭文件
- 指針
- 代碼實操
- 結語
編譯預處理
作用
簡單來說,編譯預處理的作用就是將代碼變得不像人話。之后才能被編譯器編譯成匯編進而生成機器碼
基本類型
#include<XXXXX.h> 引用頭文件
#define XXX AAA 將代碼中的XXX 全部替換為 AAA
#ifndef 判斷之前有沒有define過(多用在頭文件中)
#endif 頭文件結束標志
變量
定義一個變量,可以理解為申請了一個存儲空間,這塊存儲空間內可以存放數據。
int a;就是定義了一個int型變量,不同類型變量存儲空間大小不同。不過實質上都是一個個基本存儲空間堆起來的。
flaot a[10]; int b[] = {1,2,3,4,5}; a[5] = 0 ;數組也可以這么理解,a[10] 為一個由10個float型變量堆起來的空間,可以通過 a[i] 對 a[10] 中的第 i 個 float型變量操作(i = 0~9)。需要注意的是,i是從0 ~ n-1。a[0]是第一個以此類推。變量聲明之后存儲空間的大小將不再變化,所以[]中不可以用變量。 在聲明同時賦值的情況下可以不寫。
函數
函數基本結構
int F??kTimes (int night){int times = 0;times = night*7;return times; }逐行分析
第一行: int F??kTimes (int night)
int 為函數類型與返回值return XXX有關,int 返回 int型變量,float返回float型,以此類推。void為無返回值函數。
F??kTimes 為函數名(兩個??代表消音,我是個有素質的人),函數命名規則百度即可,一般用英語單詞就。(int night)為傳入參數。
第二行:int times;
定義一個名為times的int型變量并賦初值,變量類型也又float 等不同類型。變量命名規則百度即可,一般也用單詞。且不能為關鍵字如if、else。
第三行:times = night*7;
將night×7的值賦給times
第四行:return times;
返回return值,一般將返回值賦給變量如 a = F**kTimes; 則a的值變為times的值。
主函數
主函數函數名為 main 是程序的開始,不可或缺所有子函數,語句都必須再主函數中。主函數結束,程序即結束。
子函數
用來實現各種子功能,比如上面代碼塊,功能是求一夜幾次。
運算符
加 a+b
減 a-b
乘 a*b
除 a/b
求余數 a%b
加減乘除取余運算后結果都等與一個數一般用來賦值給變量,如 c = a+b;
大于 a>b , 大于等于 a>=b
小于 a<b , 小于等于 a<=b
等于 a==b , 不等 a != b
關系運算符用來比較,如果是對的為“真”即值為1,否則為“假”值為0。
與 && , a && b ,當 a 和 b 都為1時 ,此表達式結果才為1
或 | | , a | | b ,當 a 和 b 有至少一個為1時 ,此表達式結果才為1
非 ! , !a , 當a 為1 時,!a 為0
(),這個東西用法就和數學中的()一樣。
賦值 a=b
將 b 的值復制給 a ,如b等于520,a=b之后 a也變成520,b 值不變。
運算符可運算變量與變量如 a+b 也可運算變量與常數 如 a + 7。
運算符還有很多,但是會以上基本可以應付簡單程序。
關鍵字
if(表達式){ 程序段 }if功能為:如果表達式為1 執行程序段,否則跳過這段。if可以單獨存在。
if(表達式){ 程序段1 } else{程序段2 }else依賴于if而存在,如果if中的表達式為1,執行if {}中的程序段1。否則執行else {} 中的程序段2。
if(表達式1){程序段1 } else if (表達式2){程序段2 } ...(省略n句 else if)... else{程序段n+1}else if 主要功能就是把非表達式1的情況細分。
while(1){ 程序段 }while判斷()中的表達式,為真會開始或繼續循環,否則跳出循環。上面的while(1)為死循環,除非程序段中有跳出循環語句否則將會執行到宇宙死,或者機器死。下面的例子就是輸出100句“fuc* you”
int i = 0 ; while(i < 100){i ++ ; printf("fu*k you \n")} for(語句1;表達式;語句2){程序段 }for會先執行語句1(可以為空),之后判斷表達式,如果為真,執行{}內程序段,之后執行語句2,否則跳過。
常用的關鍵字就這些,剩下還有 do{…}while()、swich(){ case : } 、 break 、 continue 等等,掌握常用的,剩下的會在實踐中一點點積累出來。
常用函數/頭文件
#include<stdio.h> #include<math.h> int main(){ int a = 0 ; scanf("%d",&a); a = pow(a,a); printf("%d",a); return 0 ; }scanf("%d",&a); 將輸入的變量值賦給送到 a 的地址,如果輸入為5 則 a等于5,a==5 值為1.
printf("%d",a); 將a的值輸出到屏幕。
pow(a,a); 返回a的a次方,a = pow(a,a); 將返回值賦給a。
#include <stdio.h>是基本輸入輸出頭文件,用的最多,scanf、printf都在stdio.h里。math.h是數學運算頭文件。pow這種函數一般在這里面。
#include " XXXX"這種 " " 里的頭文件一般是自己寫的。
指針
指針這玩意很秀,本人經常別人的代碼里指針的用法秀到。亂七八糟,我也不想梳理了,建議看書。
代碼實操
下面是一段簡單的求輸入的數是不是素數的代碼,本人一般在Linux下寫C++,于是貼一段大一寫的練習題,為了加深理解,將代碼改的比較冗長。 “//” 這個為單行注釋,//之后的只是給人看的,經過預編譯之后就沒了,/* 。。。。。。/可以將從“/” 到 “*/”之間所有行注釋掉。很happy。
#include <stdio.h>void output( int flag ){ if(flag == 1){printf("是");}else{printf("不是")} }int main() { int a,b,c,d=0; // 定義 a b c d ,并給賦初值0scanf("%d",&a); //輸入一個數 for(b=2;b<a;b++) //循環從2到這個數次數 {if(a%b==0) //如果有一個數可以整除,d加一然后跳出 {d++;break;}} if(d>0) //如果有d加一了,兩個以上數能整除a不是 {c = 0;output(c);}else //否則是 {c = 1;output(c);} return 0; }結語
先有匯編后有C,但是C是目前系統學編程的第一步(少兒編程不算,那是給小孩子玩的)。想玩好C并不容易,但是,大膽和嘗試,會讓你進步神速。忘了說,一定要把輸入法切到英文,否則編譯器不認識,會出error。
本人對C的理解只是比小白高點,如有哪里不對,望大佬指正。
總結
- 上一篇: 免费下载 [discuz!插件] 404
- 下一篇: position与清除浮动