您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
C語言是面向過程的,而C++是面向?qū)ο蟮?/p>
C和C++的區(qū)別:
C是一個(gè)結(jié)構(gòu)化語言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
C++,首要考慮的是如何構(gòu)造一個(gè)對象模型,讓這個(gè)模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因?yàn)?ldquo; 設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因?yàn)?ldquo; 設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。
C語言一共有32個(gè)關(guān)鍵字,如下表所示:
1數(shù)據(jù)類型關(guān)鍵字
A)基本數(shù)據(jù)類型(5個(gè))
void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯式丟棄運(yùn)算結(jié)果
char:字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種
int:整型數(shù)據(jù),通常為編譯器指定的機(jī)器字長
float:單精度浮點(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
double:雙精度浮點(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
B)類型修飾關(guān)鍵字(4個(gè))
short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。
long:修飾int,長整形數(shù)據(jù),可省略被修飾的int。
signed:修飾整型數(shù)據(jù),有符號數(shù)據(jù)類型
unsigned:修飾整型數(shù)據(jù),無符號數(shù)據(jù)類型
C)復(fù)雜類型關(guān)鍵字(5個(gè))
struct:結(jié)構(gòu)體聲明
union:共用體聲明
enum:枚舉聲明
typedef:聲明類型別名
sizeof:得到特定類型或特定類型變量的大小
D)存儲級別關(guān)鍵字(6個(gè))
auto:指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放。通常在棧上分配
static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時(shí),指定函數(shù)作用域?yàn)槲募䞍?nèi)部
register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)
extern:指定對應(yīng)變量為外部變量,即在另外的目標(biāo)文件中定義,可以認(rèn)為是約定由另外文件聲明的對象的一個(gè)“引用“
const:與volatile合稱“cv特性”,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其他線程/進(jìn)程改變)
volatile:與const合稱“cv特性”,指定變量的值有可能會被系統(tǒng)或其他進(jìn)程/線程改變,強(qiáng)制編譯器每次從內(nèi)存中取得該變量的值
2流程控制關(guān)鍵字
A)跳轉(zhuǎn)結(jié)構(gòu)(4個(gè))
return:用在函數(shù)體中,返回特定值(或者是void值,即不返回值)
continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
break:跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)
goto:無條件跳轉(zhuǎn)語句
B)分支結(jié)構(gòu)(5個(gè))
if:條件語句
else:條件語句否定分支(與if連用)
switch:開關(guān)語句(多重分支語句)
case:開關(guān)語句中的分支標(biāo)記
default:開關(guān)語句中的“其他”分治,可選。
C)循環(huán)結(jié)構(gòu)(3個(gè))
for:for循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序?yàn)?->2->4->3->2...循環(huán),其中2為循環(huán)條件
do:do循環(huán)結(jié)構(gòu),do 1 while(2);的執(zhí)行順序是1->2->1...循環(huán),2為循環(huán)條件
while:while循環(huán)結(jié)構(gòu),while(1) 2;的執(zhí)行順序是1->2->1...循環(huán),1為循環(huán)條件
以上循環(huán)語句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)循環(huán),為假則跳出循環(huán)。
下面來詳細(xì)介紹各個(gè)關(guān)鍵字:
基本數(shù)據(jù)類型(5個(gè))
void
char
int
float
double
類型修飾關(guān)鍵字(4個(gè))
short
long
signed
unsigned
1)在windows,32位系統(tǒng)中
char 1個(gè)字節(jié)
short 2個(gè)字節(jié)
int 4個(gè)字節(jié)
long 4個(gè)字節(jié)
double 8個(gè)字節(jié)
float 4個(gè)字節(jié)
2)數(shù)據(jù)類型和占位符之間的對應(yīng)關(guān)系
char和unsingned char %c
short %hd
unsigned short %hu
long %ld
unsigned long %lu
int %d
unsigned int %u
float %f/%g
double %lf/%lg
%f和%lf會保留小數(shù)點(diǎn)后面多余的0 如 3.1400000 .2%f得 3.14
%g和%lg不會保留 如 3.14
規(guī)定整型值相互之間大小的規(guī)則:
長整型至少應(yīng)該和整型一樣長,而整型至少應(yīng)該和短整型一樣長。
3)signed、unsigned關(guān)鍵字
signed char取值范圍是 -2^7 到 2^7-1
unsigned char取值范圍是 0 到 2^8
signed int取值范圍是 -2^31 到 2^31-1
unsigned int取值范圍是 0 到 2^32
留兩個(gè)問題思考:
1), int i = -20;
unsigned j = 10;
i+j 的值為多少?為什么?
-10 應(yīng)該是按照有符號的來計(jì)算的
2), 下面的代碼有什么問題?
unsigned i ;
for (i=9;i>=0;i--)
{
printf("%u ",i);
}
一直打印無法停止,到了0 后,變成-1。因?yàn)?1是有符號的了,再變成 4294967295一直又減下去了
4)void關(guān)鍵字:
復(fù)雜類型關(guān)鍵字(5個(gè))
struct
union
enum
typedef
sizeof
存儲級別關(guān)鍵字(6個(gè))
auto
static
register
extern
const
volatile
2、流程控制關(guān)鍵字 A)跳轉(zhuǎn)結(jié)構(gòu)(4個(gè))
return
continue
break
goto
B)分支結(jié)構(gòu)(5個(gè))
if
else
switch
case
default
這些是C/C++能做的
服務(wù)器開發(fā)工程師、人工智能、云計(jì)算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等
C)循環(huán)結(jié)構(gòu)(3個(gè))
for
do
while
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08