C語言是面向過程的,而C++是面向?qū)ο蟮?/p>
C和C++的區(qū)別:
C是一個結(jié)構(gòu)化語言,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
C++,首要考慮的是如何構(gòu)造一個對象模型,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設(shè)計的基礎(chǔ),好的設(shè)計如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計”也能寫出非常好的東西。

在實際的工作中,僅僅使用一維數(shù)組是遠(yuǎn)遠(yuǎn)不夠的。例如,一個學(xué)習(xí)小組有5個人,每個人有三門課的考試成績,如果使用一維數(shù)組解決是很麻煩的。這時,可以使用二維數(shù)組,二維數(shù)組的定義方式與一維數(shù)組類似,其語法格式如下:
類型說明符 數(shù)組名 [常量表達(dá)式1] [常量表達(dá)式2];
在上述語法格式中,“常量表達(dá)式1”被稱為行下標(biāo),“常量表達(dá)式2”被稱為列下標(biāo)。
例如,定義一個3行4列的二維數(shù)組,具體如下:
int a[3][4];
在這個定義的二維數(shù)組中,共包含3 * 4個元素,即12個元素。接下來,通過一張圖來描述二維數(shù)組a的元素分布情況,如圖所示:
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
從圖中可以看出,二維數(shù)組a是按行進(jìn)行存放的,先存放a[0]行,再存放a[1]行、a[2]行,并且每行有四個元素,也是依次存放的。
完成二維數(shù)組的定義后,需要對二維數(shù)組進(jìn)行初始化,初始化二維數(shù)組的方式有四種,具體如下:
1、按行給二維數(shù)組賦初值。
例如:
int a[2][3] = {{1,2,3},{4,5,6}};
在上述代碼中,等號后面有一對大括號,大括號中的第一對括號代表的是第一行的數(shù)組元素,第二對括號代表的是第二行的數(shù)組元素。
2、將所有的數(shù)組元素按行順序?qū)懺谝粋€大括號內(nèi)。
例如:
int a[2][3] = {1,2,3,4,5,6};
在上述代碼中,二維數(shù)組a共有兩行,每行有三個元素,其中,第一行的元素依次為1、2、3,第二行元素依次為4、5、6。
3、對部分?jǐn)?shù)組元素賦初值。
例如:
int b[3][4] = {{1},{4,3},{2,1,2}};
在上述代碼中,只為數(shù)組b中的部分元素進(jìn)行了賦值,對于沒有賦值的元素,系統(tǒng)會自動賦值為0,數(shù)組b中元素的存儲方式如圖所示:
4、如果對全部數(shù)組元素置初值,則二維數(shù)組的第一個下標(biāo)可省略,但第二個下標(biāo)不能省略。
例如:
int a[2][3] = {1,2,3,4,5,6};
可以寫為
int a[][3] = {1,2,3,4,5,6};
系統(tǒng)會根據(jù)固定的列數(shù),將后邊的數(shù)值進(jìn)行劃分,自動將行數(shù)定位2。
二維數(shù)組的引用
二維數(shù)組的引用方式同一維數(shù)組的引用方式一樣,也是通過數(shù)組名和下標(biāo)的方式來引用數(shù)組元素,其語法格式如下:
數(shù)組名[下標(biāo)][下標(biāo)];
在上述語法格式中,下標(biāo)值應(yīng)該在已定義的數(shù)組的大小范圍內(nèi),例如下面這種情況是錯誤的:
int a[3][4]; // 定義a為3行4列的二維數(shù)組
a[3][4]=3; // 數(shù)組a第3行第4列元素賦值,出錯
在上述代碼中,數(shù)組a可用的行下標(biāo)范圍是0~2,列下標(biāo)是0~3,a[3][4]超出了數(shù)組的下標(biāo)范圍。
為了幫助大家更好地掌握二維數(shù)組的引用,接下來,通過一個案例來演示二維數(shù)組的遍歷,如例所示:
1 #include
2 int main()
3 {
4 //聲明并初始化數(shù)組
5 int array[3][4] = { {1,2,3,4 }, {5,6,7,8}, {9,10,11,12} };
6 for (int i = 0; i < 3; i++) //循環(huán)遍歷行
7 {
8 for (int j = 0; j < 4; j++) //循環(huán)遍歷列
9 {
10 printf("[%d][%d]: %d ", i, j, array[i][j]);
11 }
12 printf(" ");//每一行的末尾添加換行符
13 }
14 return 0;
15}
運(yùn)行結(jié)果如圖所示:
小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
在這個例子中,我們定義了一個二維數(shù)組array,該數(shù)組有3行4列。當(dāng)使用嵌套for循環(huán)遍歷二維數(shù)組元素時,外層for循環(huán)用于變量數(shù)組的行元素,內(nèi)層for循環(huán)用于遍歷數(shù)組的列元素。從運(yùn)行結(jié)果中可以看出,程序依次將數(shù)組array中的元素輸出了。
二維數(shù)組的應(yīng)用
熟悉了二維數(shù)組的定義和引用,接下來定義一個二維數(shù)組StuScore[5][3],用來存放5名同學(xué)3門課程的成績,并定義變量m表示學(xué)生,n表示第幾門成績,aver表示每名同學(xué)3門課程的平均成績,sum表示每名同學(xué)3門課的總成績,具體如下例所示:
1 #include
2 void main(int argc, char * argv[])
3 {
4 int StuScore[5][3] = {
5 { 88, 70, 90 }, //張同學(xué)
6 { 80, 80, 60 }, //王同學(xué)
7 { 89, 60, 85 }, //李同學(xué)
8 { 80, 75, 78 }, //趙同學(xué)
9 { 70, 80, 80 } //周同學(xué)
10 };
11 int m = 0, n = 0;
12 int nStuTotalScore;
13 int nMathTotalScore = 0;
14 int nChineseTotalScore = 0;
15 int nEnglishTotalScore = 0;
16 printf("個人總成績: ");
17 for (m = 0; m < 5; m++)
18 {
19 nStuTotalScore = 0;
20 for (n = 0; n < 3; n++)
21 {
22 nStuTotalScore += StuScore[m][n];
23 switch (n)
24 {
25 case 0:
26 {
27 nMathTotalScore += StuScore[m][0];
28 break;
29 }
30 case 1:
31 {
32 nChineseTotalScore += StuScore[m][1];
33 break;
34 }
35 case 2:
36 {
37 nEnglishTotalScore += StuScore[m][2];
38 }
39 }
40 }
41 switch (m)
42 {
43 case 0:
44 {
45 printf("張同學(xué):%d ", nStuTotalScore);
46 break;
47 }
48 case 1:
49 {
50 printf("王同學(xué):%d ", nStuTotalScore);
51 break;
52 }
53 case 2:
54 {
55 printf("李同學(xué):%d ", nStuTotalScore);
56 break;
57 }
58 case 3:
59 {
60 printf("趙同學(xué):%d ", nStuTotalScore);
61 break;
62 }
63 case 4:
64 {
65 printf("周同學(xué):%d ", nStuTotalScore);
66 break;
67 }
68 }
69 }
70 printf("小組數(shù)學(xué)總分:%d 小組數(shù)學(xué)平均分:%.2f ",
71 nMathTotalScore, (double)nMathTotalScore / 5);
72 printf("小組語文總分:%d 小組語文平均分:%.2f ",
73 nChineseTotalScore, (double)nChineseTotalScore / 5);
74 printf("小組英語總分:%d 小組英語平均分:%.2f ",
75 nEnglishTotalScore, (double)nEnglishTotalScore / 5);
76}
運(yùn)行結(jié)果如圖所示:
這個例題中實現(xiàn)了計算小組各科平均分的功能。其中,首先代碼定義了一個二維數(shù)組,用來存儲小組中每個成員的各科成績。然后通過遍歷列下標(biāo)獲取每個小組不同學(xué)科的總分,再然后通過遍歷行下標(biāo)獲取每個小組成員的總分,最后將小組不同學(xué)科的總分和平均分輸出。
多維數(shù)組
在計算機(jī)中,除一維數(shù)組和二維數(shù)組外,還有三維,四維,……等多維數(shù)組,它們用在某些特定程序開發(fā)中,多維數(shù)組的定義與二維數(shù)組類似,其語法格式具體如下:
數(shù)組類型修飾符 數(shù)組名 [n1][n2]…[nn];
定義一個三維數(shù)組的示例代碼如下:
int x[3][4][5];

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
上面的這個例子,定義了一個三維數(shù)組,數(shù)組的名字是x,數(shù)組的長度為3,每個數(shù)組的元素又是一個二維數(shù)組,這個二維數(shù)組的長度是4,并且這個二維數(shù)組中的每個元素又是一個一維數(shù)組,這個一維數(shù)組的長度是5,元素類型是int。
多維數(shù)組在實際的工作中使用不多,并且使用方法與二維數(shù)組相似,這里不再做詳細(xì)地講解,有興趣的話大家可以自己學(xué)習(xí)。
這些是C/C++能做的
服務(wù)器開發(fā)工程師、人工智能、云計算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等



