天天看點

黑馬程式員————C語言數組

------Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------

1,數組簡介

    數組就是具有相同類型的若幹元素按有序的形式組織起來。數組屬于構造資料類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本資料類型或是構造類型。數組基本分為數值數組、字元數組、指針數組、結構數組等各種類别。

2,數組的定義

    在C語言中使用數組必須先進行定義。一維數組的定義方式為:類型說明符數組名[常量表達式];類型說明符是任一種基本資料類型或構造資料類型。數組名是使用者定義的數組辨別符。方括号中的常量表達式表示資料元素的個數,也稱為數組的長度。例如:

int a[10]; 說明整型數組a,有10個元素。
float b[10]; 說明實型數組b,有10個元素。
char c[10];說明字元數組c,有10個元素。
           

注意:

1)數組的類型實際上是指數組元素的取值類型。對于同一個數組,其所有元素的資料類型都是相同的。

2)數組名的書寫規則應符合辨別符的書寫規定。

3)數組名不能與其它變量名相同。

4)方括号中常量表達式表示數組元素的個數,其下标從0開始計算。

5)不能在方括号中用變量來表示元素的個數, 但是可以是符号常數或常量表達式。

3,數組的簡單引用

    數組元素的一般形式為:數組名[下标]。其中下标隻能為整型常量或整型表達式。(如為小數時,C 編譯将自動取整。)如下:

a[5]
a[i+j]
a[i++]
           

數組元素的簡單周遊:

#include <stdio.h>
int main()
{
int i,a[5]={1,2,3,4,5};
for(i=0; i<5; i++)
printf("%d",a[i]);
return 0;
}
           

4,一維數組的初始化

    數組初始化指派是指在數組定義時給數組元素賦予初值。數組初始化是在編譯階段進行的。這樣将減少運作時間,提高效率。給數組指派的方法除了用指派語句對數組元素逐個指派外, 還可采用初始化指派和動态指派的方法。

數組初始化指派的一般形式為:

類型說明符數組名[常量表達式]={值,值……值};
           

C語言對數組的初始化指派還有以下幾點規定:

1)可以隻給部分元素賦初值。

例如

int a[10]={0,1,2,3,4};
           
int a[10]={[3]=1,[5]=8}
           

2)隻能給元素逐個指派,不能給數組整體指派。

例如

int a[10]={1,1,1,1,1,1,1,1,1,1};
           

不能寫成

int a[10]=1;
           

3)如給全部元素指派,則在數組說明中,可以不給出數組元素的個數。

例如

int a[]={0,1,2,3,4};
           

5,一維數組舉例

#include <stdio.h>
int main()
{
	int i,max,a[10];	//定義一個數組a、變量i、變量max
	printf("input 10 numbers:\n");		//提示輸入10個數
	scanf("%d",&a[i]);		//給數組元素指派
	max=a[0];
	for(i=1;i<10;i++)		//求數組a中最大的元素
		if(a[i]>max) 
			max=a[i];
	printf("maxmum=%d\n",max);
}
           

6,二維數組

    1)二維數組定義的一般形式是:類型說明符數組名[常量表達式1][常量表達式2]。其中常量表達式1 表示第一維下标的長度,常量表達式2 表示第二維下标的長度。例如:

int a[2][3];
           

展開後如下:

a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]
           

    2)二維數組的元素也稱為雙下标變量,其表示的形式為:數組名[下标][下标].其中下标應為整型常量或整型表達式。在上例中a[1][1]表示第一行第一列的元素。

    注意:下标變量和數組說明在形式中有些相似,但這兩者具有完全不同的含義。數組說明的方括号中給出的是某一維的長度,即可取下标的最大值;而數組元素中的下标是該元素在數組中的位置辨別。前者隻能是常量,後者可以是常量,變量或表達式。

    3)二維數組初始化也是在類型說明時給各下标變量賦以初值。二維數組可按行分段指派,也可按行連續指派。例如:

int a[2][3]={{1,2,3},{2,3,4}};
           

或者

int a[2][3]={1,2,3,2,3,4};
           

注意:(二維數組和一維數組的初始化相類似)

   (1)可以隻對部分元素賦初值,未賦初值的元素自動取0值。例如:

int a[2}][3]={{1},{2}};
           

展開後如下:

1 0 0
2 0 0
           

   (2)如對全部元素賦初值,則第一維的長度可以不給出。

例如:

int a[2][3]={1,2,3,4,5,6,};
           

也可寫為:

int a[][3]={1,2,3,4,5,6,};
           

   (3)數組是一種構造類型的資料。二維數組可以看作是由一維數組的嵌套而構成的。設一維數組的每個元素都又是一個數組,就組成了二維數組。

例如二維數組a[2][3]可分解為兩個一維數組:a[0]、a[1]。

7,字元數組和字元串

1)用來存放字元量的數組稱為字元數組。

例如:

char c[5]={'a','b','c','d','e'};
           

2)在C語言中沒有專門的字元串變量,通常用一個字元數組來存放一個字元串。

例如:

char c[]={"C program"};
           

也可寫為:

char c[]="C program";
           

用字元串方式指派比用字元逐個指派要多占一個位元組, 用于存放字元串結束标志'\0'。上面的數組c 在

記憶體中的實際存放情況為:

C p r o g r a m \0

8,字元數組簡單舉例

<span style="font-weight: normal;"><span style="font-size:10px;"><span style="font-weight: normal;">#include <stdio.h>
int main()
{
	char st[15];		//定義字元數組
	printf("input string:\n");		//提示輸入字元串
	scanf("%s",st);		//儲存輸入結果到字元數組st
	printf("%s\n",st);	//輸出字元st儲存的字元串
}</span></span></span>
           

繼續閱讀