辛苦整理的C語(yǔ)言筆記,還好沒(méi)放棄
c語(yǔ)言入門(mén)
C語(yǔ)言一經(jīng)出現(xiàn)就以其功能豐富、表達(dá)能力強(qiáng)、靈活方便、應(yīng)用面廣等特點(diǎn)迅速在全世界普及和推廣。C語(yǔ)言不但執(zhí)行效率高而且可移植性好,可以用來(lái)開(kāi)發(fā)應(yīng)用軟件、驅(qū)動(dòng)、操作系統(tǒng)等。C語(yǔ)言也是其它眾多高級(jí)語(yǔ)言的鼻祖語(yǔ)言,所以說(shuō)學(xué)習(xí)C語(yǔ)言是進(jìn)入編程世界的必修課。hello,world
#include
int?main()
{
????/*在雙引號(hào)中間輸入Hello?World*/?
????printf("Hello?World");
????return?0;?
}
注:在最新的C標(biāo)準(zhǔn)中,main函數(shù)前的類(lèi)型為
int
而不是void
c語(yǔ)言的具體結(jié)構(gòu)
簡(jiǎn)單來(lái)說(shuō),一個(gè)C程序就是由若干頭文件
和函數(shù)
組成。#include
就是一條預(yù)處理命令, 它的作用是通知C語(yǔ)言編譯系統(tǒng)在對(duì)C程序進(jìn)行正式編譯之前需做一些預(yù)處理工作。函數(shù)
就是實(shí)現(xiàn)代碼邏輯的一個(gè)小的單元。
必不可少之主函數(shù)
一個(gè)C程序有且只有一個(gè)主函數(shù),即main
函數(shù)。C程序就是執(zhí)行主函數(shù)里的代碼,也可以說(shuō)這個(gè)主函數(shù)就是C語(yǔ)言中的唯一入口。- 而main前面的int就是主函數(shù)的類(lèi)型.
printf()
是格式輸出函數(shù),這里就記住它的功能就是在屏幕上輸出指定的信息- return是函數(shù)的返回值,根據(jù)函數(shù)類(lèi)型的不同,返回的值也是不同的。
\n
是轉(zhuǎn)義字符中的換行符。(注意:C程序一定是從主函數(shù)開(kāi)始執(zhí)行的)
良好習(xí)慣之規(guī)范
- 一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行,例如:包含頭文件、一個(gè)可執(zhí)行語(yǔ)句結(jié)束都需要換行。
- 函數(shù)體內(nèi)的語(yǔ)句要有明顯縮進(jìn),通常以按一下Tab鍵為一個(gè)縮進(jìn)。
- 括號(hào)要成對(duì)寫(xiě),如果需要?jiǎng)h除的話也要成對(duì)刪除。
- 當(dāng)一句可執(zhí)行語(yǔ)句結(jié)束的時(shí)候末尾需要有分號(hào)。
- 代碼中所有符號(hào)均為英文半角符號(hào)。
程序解釋——注釋
注釋是寫(xiě)給程序員看的,不是寫(xiě)給電腦看的。C語(yǔ)言注釋方法有兩種:多行注釋?zhuān)?/* 注釋內(nèi)容 */
單行注釋?zhuān)?//注釋一行
有名有姓的C(標(biāo)識(shí)符)
C語(yǔ)言規(guī)定,標(biāo)識(shí)符可以是字母(A~Z,a~z)
、數(shù)字(0~9)
、下劃線_
組成的字符串,并且第一個(gè)字符必須是字母或下劃線。在使用標(biāo)識(shí)符時(shí)還有注意以下幾點(diǎn):
- 標(biāo)識(shí)符的長(zhǎng)度最好不要超過(guò)8位,因?yàn)樵谀承┌姹镜腃中規(guī)定標(biāo)識(shí)符前8位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前8位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。
- 標(biāo)識(shí)符是嚴(yán)格區(qū)分大小寫(xiě)的。例如
Imooc
和imooc
?是兩個(gè)不同的標(biāo)識(shí)符。 - 標(biāo)識(shí)符最好選擇有意義的英文單詞組成做到"見(jiàn)名知意",不要使用中文。
- 標(biāo)識(shí)符不能是C語(yǔ)言的關(guān)鍵字。想了解更多C語(yǔ)言關(guān)鍵字的知識(shí)。
變量及賦值
變量就是可以變化的量,而每個(gè)變量都會(huì)有一個(gè)名字(標(biāo)識(shí)符)。變量占據(jù)內(nèi)存中一定的存儲(chǔ)單元。使用變量之前必須先定義變量,要區(qū)分變量名和變量值是兩個(gè)不同的概念。變量定義的一般形式為:數(shù)據(jù)類(lèi)型 變量名;
多個(gè)類(lèi)型相同的變量:數(shù)據(jù)類(lèi)型 變量名, 變量名, 變量名...;注意:在定義中不允許連續(xù)賦值,如
int a=b=c=5;
是不合法的。變量的賦值分為兩種方式:
- 先聲明再賦值
- 聲明的同時(shí)賦值
基本數(shù)據(jù)類(lèi)型
C語(yǔ)言中,數(shù)據(jù)類(lèi)型可分為:- 基本數(shù)據(jù)類(lèi)型
- 構(gòu)造數(shù)據(jù)類(lèi)型
- 指針類(lèi)型
- 空類(lèi)型四大類(lèi)
int
?short int
?long int
是根據(jù)編譯環(huán)境的不同,所取范圍不同。- 而其中
short int
和long int
至少是表中所寫(xiě)范圍, 但是int
在表中是以16位編譯環(huán)境寫(xiě)的取值范圍。 - 另外 c語(yǔ)言
int
的取值范圍在于他占用的字節(jié)數(shù) ,不同的編譯器,規(guī)定是不一樣。 - ANSI標(biāo)準(zhǔn)定義
int
是占2個(gè)字節(jié),TC是按ANSI標(biāo)準(zhǔn)的,它的int
是占2個(gè)字節(jié)的。但是在VC里,一個(gè)int
是占4個(gè)字節(jié)的。
生活中有很多信息適合使用浮點(diǎn)型數(shù)據(jù)來(lái)表示,比如:人的體重(單位:公斤)、商品價(jià)格、圓周率等等。因?yàn)榫鹊牟煌址譃?種(float,double,long double):注:C語(yǔ)言中不存在字符串變量,字符串只能存在字符數(shù)組中,這個(gè)后面會(huì)講。
格式化輸出語(yǔ)句
格式化輸出語(yǔ)句,也可以說(shuō)是占位輸出,是將各種類(lèi)型的數(shù)據(jù)按照格式化后的類(lèi)型及指定的位置從計(jì)算機(jī)上顯示。其格式為:printf("輸出格式符",輸出項(xiàng))
;當(dāng)輸出語(yǔ)句中包含普通字符時(shí),可以采用一下格式:printf("普通字符輸出格式符", 輸出項(xiàng));注意:格式符的個(gè)數(shù)要與變量、常量或者表達(dá)式的個(gè)數(shù)一一對(duì)應(yīng)不可改變的常量
在程序執(zhí)行過(guò)程中,值不發(fā)生改變的量稱(chēng)為常量。mtianyan: C語(yǔ)言的常量可以分為直接常量和符號(hào)常量。- 直接常量也稱(chēng)為字面量,是可以直接拿來(lái)使用,無(wú)需說(shuō)明的量,比如:
- 整型常量:13、0、-13;
- 實(shí)型常量:13.33、-24.4;
- 字符常量:‘a(chǎn)’、‘M’
- 字符串常量:”I love imooc!”
#define 標(biāo)識(shí)符 常量值
#include?
#define?POCKETMONEY?10????//定義常量及常量值
int?main()
{
????// POCKETMONEY = 12;??//小明私自增加零花錢(qián)對(duì)嗎?
????printf("小明今天又得到%d元零花錢(qián)\n",?POCKETMONEY);
????return?0;??
}
符號(hào)常量不可以被改變。
自動(dòng)類(lèi)型轉(zhuǎn)換
數(shù)據(jù)類(lèi)型存在自動(dòng)轉(zhuǎn)換的情況.自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類(lèi)型運(yùn)算時(shí),在編譯的時(shí)候自動(dòng)完成。
char
類(lèi)型數(shù)據(jù)轉(zhuǎn)換為int
類(lèi)型數(shù)據(jù)遵循ASCII
碼中的對(duì)應(yīng)值.注:字節(jié)小的可以向字節(jié)大的自動(dòng)轉(zhuǎn)換,但字節(jié)大的不能向字節(jié)小的自動(dòng)轉(zhuǎn)換
char可以轉(zhuǎn)換為int,int可以轉(zhuǎn)換為double,char可以轉(zhuǎn)換為double。但是不可以反向。
強(qiáng)制類(lèi)型轉(zhuǎn)換
強(qiáng)制類(lèi)型轉(zhuǎn)換是通過(guò)定義類(lèi)型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為:(數(shù)據(jù)類(lèi)型) (表達(dá)式)其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類(lèi)型說(shuō)明符所表示的類(lèi)型在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:- 數(shù)據(jù)類(lèi)型和表達(dá)式都必須加括號(hào), 如把
(int)(x/2 y)
寫(xiě)成(int)x/2 y
則成了把x
轉(zhuǎn)換成int
型之后再除2
再與y
相加了。 - 轉(zhuǎn)換后不會(huì)改變?cè)瓟?shù)據(jù)的類(lèi)型及變量值,只在本次運(yùn)算中臨時(shí)性轉(zhuǎn)換。
- 強(qiáng)制轉(zhuǎn)換后的運(yùn)算結(jié)果不遵循四舍五入原則。
運(yùn)算符號(hào)
C語(yǔ)言中運(yùn)算符:※ 算術(shù)運(yùn)算符※ 賦值運(yùn)算符
※ 關(guān)系運(yùn)算符
※ 邏輯運(yùn)算符
※ 三目運(yùn)算符
算術(shù)運(yùn)算符
c語(yǔ)言基本運(yùn)算符:除法運(yùn)算中注意:如果相除的兩個(gè)數(shù)都是整數(shù)的話,則結(jié)果也為整數(shù),小數(shù)部分省略,如8/3 = 2
;
而兩數(shù)中有一個(gè)為小數(shù),結(jié)果則為小數(shù),如:9.0/2 = 4.500000
。
mtianyan:?取余運(yùn)算中注意:該運(yùn)算只適合用兩個(gè)整數(shù)進(jìn)行取余運(yùn)算,如:10%3 = 1
;
mtianyan: notes: 而10.0%3則是錯(cuò)誤的;運(yùn)算后的符號(hào)取決于被模數(shù)的符號(hào),如mtianyan:?(-10)%3 = -1;
而10%(-3) = 1;
%%
表示這里就是一個(gè)%
符.注:C語(yǔ)言中沒(méi)有乘方這個(gè)運(yùn)算符,也不能用×, ÷
等算術(shù)符號(hào)。自增與自減運(yùn)算符
- 自增運(yùn)算符為
- 自減運(yùn)算符為
--
,其功能是使變量值自減1。
賦值運(yùn)算符
C語(yǔ)言中賦值運(yùn)算符分為簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符=
號(hào)了,下面講一下復(fù)合賦值運(yùn)算符:復(fù)合賦值運(yùn)算符就是在簡(jiǎn)單賦值符=
之前加上其它運(yùn)算符構(gòu)成.例如 =、-=、*=、/=、%=
分析:定義整型變量a并賦值為3,a = 5;
這個(gè)算式就等價(jià)于a = a 5;
?將變量a和5相加之后再賦值給a注意:復(fù)合運(yùn)算符中運(yùn)算符和等號(hào)之間是不存在空格的。關(guān)系運(yùn)算符
C語(yǔ)言中的關(guān)系運(yùn)算符:關(guān)系表達(dá)式的值是真
和假
,在C程序用整數(shù)1
和0
表示。注意:>=, <=, ==, !=
這種符號(hào)之間不能存在空格。邏輯運(yùn)算符
C語(yǔ)言中的邏輯運(yùn)算符:邏輯運(yùn)算的值也是有兩種分別為真
和假
,C語(yǔ)言中用整型的1和0來(lái)表示。其求值規(guī)則如下:- 與運(yùn)算?