一組有個固定大小、相同數據類型的數據的集合。數組
數組能夠分爲:一維數組、二維數組、三維數組、...(維數不止一維:多維數組)spa
表格 : 行和列(二維數組)指針
類型說明符 數組標識符[常量表達式];內存
類型說明符:數組中全部元素的類型編譯器
數組標識符 :數組名,跟變量的命名規則同樣。字母、數字、下劃線for循環
[]: 下標運算符編譯
常量表達式:數組元素的個數,也就是數組的長度。只能是常量,不能是變量。變量
符號常量 #define LENGTH 10循環
經過下標訪問獲得每一個元素的值。array[0]遍歷
有幾種方法:
char arr[4] = {'a','b','c','d'};//初始化列表
arr[0]='a',arr[1]='b',arr[2]='c',arr[3]='d'
long arr[6] = {8,45,12,56};
short arr[10] = { 0 };
//遍歷
for (int i = 0; i < 6;i++)
{
printf("arr[%d]=%ld\n",i,arr[i]);
}
short arr[] = {1,2,3,4,5,6,7,8};
編譯器會根據咱們給定的初始化元素的個數來定義這個數組的長度
數組越界:arr[8],arr[9] 編譯器不會報錯,
數組名:是一個指針常量,指向這個數組第一個元素的地址,數組的首地址。
char str[12] = "Hello World";//字符常量看作初始化列表
printf("%s\n",str);
char str[11] = {'H','e','l','l','o',' ','W','o','r','l','d'};
str[0] = 'W';
從鍵盤輸入,爲每個元素賦值
int arr[5];
scanf("%d",&arr[0]);
scanf("%d", &arr[1]);
scanf("%d", &arr[2]);
scanf("%d", &arr[3]);
scanf("%d", &arr[4]);
for (int i = 0; i < 5;i++)
{
printf("%d,",arr[i]);
}
使用for循環:
int arr[5];
for (int i = 0; i < 5;i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < 5;i++)
{
printf("%d,",arr[i]);
}
/////
int arr[5];
scanf("%d", arr);
一段連續的內存空間
數組所佔的內存空間大小 = 數組類型 * 數組的長度;
printf("%d\n",arr);//是一個指針常量,指向這個數組第一個元素的地址,數組的首地址。
//sizeof()
printf("%d\n",sizeof(arr));//整個數組的大小
數組的長度:
sizeof(arr) /sizeof(int);
不可以修改的量,必定要初始化。
const int i=10;
int arr[i];//不行
//const int i = 12;
//char arr[i] = {0};
超過一維的就是多維數組,二維數組、三維數組....
通常形式:
數據類型 數組名[常量表達式1][常量表達式2]
int arr[10];//一位數組
char arr[2][5];//二維數組
float arr[2][3][5];//三維數組
double ar[2][3][4][5];//四維數組
在內存中:一塊固定大小、連續的內存空間
char arr[2][5]={0,1,2,3,4,5,6,7,8,9};
int arr[2][2][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
打印一個二維數組
int arr[4][5]={1,2,3,4};
int arr[][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};