陣列
本文最後更新於:2024年3月27日 晚上
陣列
宣告
int f[123] = {};
char t[234] = {};
上面的 int
和 char
是型態,代表陣列裡面每一格存的東西。f
是名字。[123]
[234]
是陣列的長度,也就是有幾格。
= {}
意思是把裡面每一項都設成空的
像
int
的空值就是 $0$
注意長度為 $123$ 時編號是 $0$ 到 $122$
使用
int f[100] = {};
f[1] = 1;
printf("%d %d",f[0],f[1]);
結果是
0 1
遍歷
長度可以這樣算出來
int f[100] = {};
int n = sizeof(f) / sizeof(int);
讀 $100$ 項數字進 $f$
for(int i = 0;i<n;i++) {
scanf("%d",&f[i]);
}
把每一項都輸出出來
for(int i = 0;i<n;i++) {
printf("%d ",f[i]);
}
二維陣列
也就是陣列裡面包陣列
宣告
int f[3][100] = {};
int n = 3;
int m = 100;
輸入 $3 \times 100$ 個數字
for(int i = 0;i<n;i++) {
for(int j = 0;j<m;j++) {
scanf("%d",&f[i][j]);
}
}
全部輸出
for(int i = 0;i<n;i++) {
for(int j = 0;j<m;j++) {
printf("%d ",f[i][j]);
}
printf("\n");
}
補充
f
是個指著 指著數字的指標 的指標f[0]
是個指著另一個數字陣列的指標
而 f[0][0]
才是那項數字
可以把
f
當 二維陣列f[0]
當 一維陣列
而 一維陣列[i]
就是取裡面的值
所以f[0][0]
就是那個值。
陣列傳值
code
// Author : ysh
// 2024/03/28 Thu 09:59:13
#include<stdio.h>
using namespace std;
void print(int f[10][10]) {
for(int i = 0;i<10;i++) {
for(int j = 0;j<10;j++) {
printf("%d ",f[i][j]);
}
printf("\n");
}
return;
}
int main() {
// ios::sync_with_stdio(false);
// cin.tie(0);
int f[10][10] = {};
int t = 0;
for(int i = 0;i<10;i++) {
for(int j = 0;j<10;j++) {
t = t + 1;
f[i][j] = t;
}
}
print(f);
return 0;
}
簡單來說呢,就是把陣列傳進 function 裡面。
void print(int f[100][100]) {
...
}
像這樣,不過記得註明長度。
不可以用其他變數當長度喔
像這樣
void print(int f[n][m]) {
...
}
這是二維陣列,一維的話拿掉一個
[10]
就可以了
定義
#include<stdio.h>
#define N 100
int main() {
printf("%d",N);
}
甚至可以
#include<stdio.h>
#define p printf
int main() {
p("100");
}
主要是編譯的時候,它會幫你把程式裡出現的 p
都換成 printf
,再開始編譯。
所以對電腦來說,看起來應該會長這樣:
....... (這裡是 stdio.h 面的東西)
int main() {
printf("100");
}
TO-DO List
陣列傳值- 二分搜
定義
陣列
http://mysh212.github.io/2024/03/27/Array/