在C程序語(yǔ)言的設(shè)計(jì)中,為了方便在編程時(shí)的方便使用,將具有相同類型的變量按照一定的形式組織的。那么,這些排列相同的數(shù)據(jù)元素的集合稱之為數(shù)組。因此,按照數(shù)組元素的類型不同,可以分為整型數(shù)組、字符數(shù)組、實(shí)型數(shù)組……
1 一位數(shù)組
1. 一維數(shù)組的定義
以為數(shù)組的定義方式:
類型說(shuō)明符 數(shù)組名[常量表達(dá)式]:
注釋:
1.類型說(shuō)明符是基本數(shù)據(jù)類型或者結(jié)構(gòu)數(shù)據(jù)類型;
2.數(shù)組名是用戶自己定義的名稱;
3.常量表達(dá)式表示的是數(shù)組元素的個(gè)數(shù),又稱數(shù)組長(zhǎng)度。
例如:
int arr[10] // int表示該數(shù)組屬于整形類型;arr表示數(shù)組的名稱;10表示數(shù)組的長(zhǎng)度,即數(shù)組中有多少個(gè)元素。
注意:
1.同一個(gè)數(shù)組里面的元素,其值的類型是相同的;
2.數(shù)組名的書寫應(yīng)符合標(biāo)識(shí)符的書寫規(guī)范;
3.數(shù)組名不能與其他變量相同。
2. 一維數(shù)組的賦值
1.數(shù)組的初始化:int arr[5]={1,2,3,4,5};
2.int arr[5]={1,2,3};如果實(shí)際元素少于數(shù)組的大小,那么用零補(bǔ)全數(shù)組,則該數(shù)組也可以寫為:arr[5]={1,2,3,0,0};
3.int arr['a']={1,2,3};
4.int arr[]={1,2,3};如果數(shù)組大小未標(biāo)明,就默認(rèn)為元素個(gè)數(shù),并確定為數(shù)組大小,即arr[3]={1,2,3};
5.int arr[5]={[1]=2,[4]=6};給相對(duì)應(yīng)得元素進(jìn)行賦值。
3. 一位數(shù)組元素的引用
數(shù)組的元素是組成組數(shù)的基本的單位,同樣數(shù)組元素也是一種變量,其表示方法如下:
數(shù)組名[下標(biāo)]
注意:
1.數(shù)組的下標(biāo)只能為整型常量或整型表達(dá)式。若為小數(shù),則自動(dòng)取整。
2.數(shù)組下標(biāo)是從0開(kāi)始的,例如arr[5]的數(shù)組元素有arr[0]~arr[4];
練習(xí)1:請(qǐng)輸入一個(gè)數(shù)組arr[5]={0,1,2,3,4},并打印輸出。
#include<stdio.h>
int main()
{
int i,arr[5];
for (i=0;i<5;i++) // 利用for循環(huán)輸入arr[5]的元素值
{
arr[i]=i;
}
for (i=0;i<5;i++) // 利用for循環(huán)輸出數(shù)組arr[5]
{
printf ("arr[%d]=%d\n",i,arr[i]);
}
return 0;
}
練習(xí)2:輸入一個(gè)數(shù)組arr[5],求出最大值,并且進(jìn)行輸出。
#include <stdio.h>
int main()
{
int i,arr[5];
for (i=0;i<5;i++)
{
printf ("input a number:\n");
scanf("%d",&arr[i]);
}
int max=arr[0];
for (i=1;i<5;i++)
{
max=max>arr[i]?max:arr[i];
}
printf("max=%d\n",max);
return 0;
}
4. 指針和一維數(shù)組
- 指針數(shù)組
//先算[]代表p是一個(gè)數(shù)組,3代表數(shù)組的長(zhǎng)度;int *表示元素都是指向整型變量的指針。
#include <stdio.h>
int main()
{
int a=8,b=9,c=10;
int *p={&a,&b,&c};
a=7;
printf("a=%d\n",*(p[0]));
}
說(shuō)明:
1.數(shù)組名是首元素的地址;
2.數(shù)組名是不可更改的,實(shí)際上就是int * const arr;
3.訪問(wèn)一維數(shù)組元素地址:&arr[i],arr+1;
4.訪問(wèn)一維數(shù)組元素的值:arr[i],*(arr+1)。
- 如何使用指針訪問(wèn)數(shù)組
#include<stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
int *p=arr;
int i;
for (i=0;i<5;i++)
{
printf("arr[%d]=%d\t",*(p+i));
}
return 0;
}
結(jié)論:
1.只要有p的存在,arr能做的事情,p都能做;arr不能做的,p也能做。
2.訪問(wèn)一位數(shù)組元素的地址:&p[i],p+i,&arr[i],arr+1;
3.訪問(wèn)一位數(shù)組的元素值:p[i],(p+i),arr[i]。