陣列

本文最後更新於:2024年3月27日 晚上

陣列

宣告

int f[123] = {};
char t[234] = {};

上面的 intchar 是型態,代表陣列裡面每一格存的東西。
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] 就是那個值。

陣列傳值

簡單來說呢,就是把陣列傳進 function 裡面。

void print(int f[100][100]) {
    ...
}

像這樣,不過記得註明長度。

不可以用其他變數當長度喔
像這樣

void print(int f[n][m]) {
    ...
}

這是二維陣列,一維的話拿掉一個 [10] 就可以了

進階用法

void print(int ** f) {
    ...
}

這樣就可以不用寫長度了,但必須傳指標,其實會更麻煩

定義

#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/
作者
ysh
發布於
2024年3月27日
更新於
2024年3月27日
許可協議