7.陣列的定義和使用
阿新 • • 發佈:2020-12-16
技術標籤:C初級
想要實現對陣列的遍歷訪問請現觀看3.迴圈和操作符博文中 ***[] 下標引用部分內容***部分的內容
一維陣列定義及初始化
棧區開闢
-
給定陣列大小,不進行初始化
int arr[4];
每個元素都會被初始化為0XCCCCCCCC即3435973836,實際上陣列有4個整形,但是為了檢查陣列越界,往後還會多開闢一個空間並且也會初始化為0XCCCCCCCC
char arr[3] = {0x66, 0x88};
當定義元素個數為3的字元陣列的時候,記憶體所操作的部分是8+3個位元組
不斷更改字元陣列初始的元素個數,發現字元陣列開闢空間的大小是,陣列初始的元素個數除以4向上取證,然後加1,再乘以4,以及最後末尾追加操作的3個位元組
-
給定陣列大小,進行部分初始化
int arr[4] = { 1 };
除陣列第一個元素為1外,其餘全為0
-
不給定陣列大小,直接通過初始化列表進行定義
int arr[] = {1, 2, 3, 4};
堆區動態開闢一維陣列
請參考: 牛客C語言入門題庫 博文中例題 ***BC96有序序列判斷***學習
一維陣列的遍歷
- 通過下標引用[]操作符依次訪問陣列所有元素
#include <stdio.h>
#include <string.h>
int main() {
char arr[] = "nirvana";
for (int i = 0; i < strlen(arr); ++i)
printf("%c ", arr[i]);
printf("\n");
return 0;
}
關於陣列給函式傳參的知識請觀看:博文 6.函式與遞迴 中函式傳參 陣列傳參與sizeof使用的例子
二維陣列的定義和使用
- 棧區定義一個三行四列的矩陣
#include <stdio.h>
int main() {
int arr[3][4] = { 0 };
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 4; ++j)
arr[i][j] = i+j;
for (int i = 0; i < 3; ++i){
for (int j = 0; j < 4; ++j)
printf("%d ", arr[i][j]);
printf("\n");
}
return 0;
}