C語言數組的創建和使用
- 數組是一組相同類型元素的集合。
一維數組的創建及初始化
//創建int類型的數組
//直接創建:不對數組進行初始化
int arr1[10];
//最常用、好用的創建方式
int arr2[10] = { 0 }; //所有元素都被初始化為0
//完全初始化,創建時對每個元素都進行初始化
int arr3[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//不完全初始化,創建時只對其中幾個元素進行初始化,其余元素默認被初始化為0
int arr4[10] = { 0, 1, 2, 3, 4 };
//對指定元素進行初始化
int arr5[10] = { [5] = 6 };
//不指定元素個數,數組的大小由創建時初始化元素個數決定
int arr6[] = { 0, 1, 2 };
一維數組的使用
對這六個數組的元素進行逐個打印:
//Print the array
void PrintArr(int sz ,int arr[])
{
int i = 0;
for (i = 0 ; i < sz ; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
效果如下:
一維數組在內存中的存儲形式
-
數組名為數組首元素地址
對剛才創建的六個數組的數組名進行打印
printf("%p\n",arr1);
printf("%p\n",arr2);
printf("%p\n",arr3);
printf("%p\n",arr4);
printf("%p\n",arr5);
printf("%p\n",arr6);
結果如下:
- 數組在內存中是連續存放的。
對其中一個數組的元素的地址逐個打印:
int i = 0;
for (i = 0; i < 10 ;i++ )
{
printf("&arr1[%d] : %p\n", i, &arr1[i]);
}
結果如下:
二維數組的創建及初始化
//直接創建:不對數組進行初始化
int arr7[3][4];
//完全初始化,創建時對每個元素都進行初始化
int arr8[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
//不完全初始化,創建時只對其中幾個元素進行初始化,其余元素默認被初始化為0
int arr9[3][4] = { 0, 1, 2, 3, 4, 5, 6 };
//所有元素都被初始化為0
int arr10[3][4] = { 0 };
int arr11[3][4] = { {0 , 1 } , { 3 , 4} } ;
二維數組的使用
對這五個二維數組的元素進行逐個打印:
int i, j;
printf("arr7:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ",arr7[i][j]);
}
printf("\n");
}
...
結果如下:
二維數組在內存中的存儲形式
- 二維數組在內存中的存儲形式邏輯上是這樣的:
- 實際上和一維數組一樣,是連續的
int i = 0;
for(i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("&arr8[%d][%d] : %p\n", i, j, &arr8[i][j]);
}
}
結果如下: