# 陣列(Array)
----
# 啥是陣列?
----
## 一個可以放很多變數的資料型別
----

### 一個陣列只能裝同種資料型別的變數
----
# 宣告
----
# 型別 名稱[大小];
----
## code
```cpp=
#include<iostream>
int main(){
int arr[5];
double arr2[10];
}
```
----
# 給值
----
```cpp=
#include<iostream>
int main(){
int arr[5];
arr[0] = 2;
arr[1] = 5;
arr[2] = 1;
arr[3] = 3;
arr[4] = 4;
}
```
----
### 此時的陣列狀態

----
# 搭配迴圈
----
## code
```cpp=
#include <iostream>
using namespace std;
int main(){
int arr[100];
for(int i = 0; i < 100; i++){
int x;
cin >> x;
arr[i] = x;
}
}
```
----
## 也可以直接cin
```cpp=
#include <iostream>
using namespace std;
int main(){
int arr[100];
for(int i = 0; i < 100; i++){
cin >> arr[i];
}
}
```
----
# 取值
----
## 很直覺
```cpp=
#include <iostream>
using namespace std;
int main(){
int arr[100];
for(int i = 0; i < 100; i++){
cin >> arr[i];
}
cout << arr[0] << " " << arr[1] << '\n';
arr[5] = arr[1]+arr[2];
}
```
----
# underflow和overflow
----
## 不見得會報錯
## 但值一定會出錯
----
```cpp=
#include <iostream>
using namespace std;
int main(){
int arr[5];
for(int i = 0; i<5; i++){
cin >> arr[i];
}
cout << arr[5]; //Error
}
```
## overflow
----
```cpp=
#include <iostream>
using namespace std;
int main(){
int arr[5];
for(int i = 0; i<5; i++){
cin >> arr[i];
}
cout << arr[-1]; //Error, im not python
}
```
## underflow
----
# 練習題
# CSDC #291
----
## code
```cpp=
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int arr[n]; //宣告
for(int i = 0; i < n; i++){
cin >> arr[i];
} //存名稱
int q, p;
cin >> q >> p;
p = p-1; //第p個人index是p-1
int start = p-q, end = p+q;
if(start<0){
start = 0;
}
if(end>n-1){
end = n-1;
} //避免踩禁區
for(int i = start; i <= end; i++){
cout << arr[i] << " ";
} //輸出
}
```
{"metaMigratedAt":"2023-06-17T14:16:22.754Z","metaMigratedFrom":"YAML","title":"陣列(Array)","breaks":true,"contributors":"[{\"id\":\"4fa49699-4204-4853-a27b-42a118fdac82\",\"add\":7795,\"del\":5875},{\"id\":null,\"add\":1157,\"del\":996}]"}