逍遙自在學C語言 | 指標和陣列的關聯

2023-06-20 18:00:38

前言

指標和陣列之間存在著緊密的關係。在本文中,我們將探討指標和陣列的關係、指標算術和陣列遍歷、多維陣列與指標以及指標陣列和陣列指標。

一、人物簡介

  • 第一位閃亮登場,有請今後會一直教我們C語言的老師 —— 自在。

  • 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙。

二、指標和陣列的關係

  • 在C語言中,陣列名是指向陣列首元素的指標。

  • 範例程式碼:

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr; // 陣列名作為指標使用
    
    // 使用指標存取陣列元素
    printf("ptr指向 %d \n", *ptr);
    return 0;
}

  • 在上述範例中,我們將陣列名arr賦給指標ptr,並使用*ptr存取陣列的第一個元素。

  • 輸出結果

ptr指向 1

三、指標算術和陣列遍歷

  • 指標算術允許我們通過增加或減少指標的值來存取陣列中的不同元素。
  • 通過改變ptr的值,實現對陣列的遍歷
  • 範例程式碼:
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr;

    // 使用指標算術存取陣列元素
    for (int i = 0; i < 5; i++) {
        printf("ptr指向 %d \n", *(ptr + i));
    }

    return 0;
}

  • 輸出結果
ptr指向 1
ptr指向 2
ptr指向 3
ptr指向 4
ptr指向 5

四、多維陣列與指標

  • C語言中支援多維陣列,我們同樣可以使用指標來存取多維陣列的元素。

  • 範例程式碼:

#include <stdio.h>

int main() {
    int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}};
    int (*ptr)[2] = arr;

    // 使用指標存取多維陣列元素
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", *(*(ptr + i) + j));
        }
        printf("\n");
    }

    return 0;
}

  • 我們定義了一個二維陣列arr,並將其賦給指標ptr

  • 通過使用指標算術和雙重指標解除參照,存取了多維陣列中的每個元素。

  • 輸出結果

1 2
3 4
5 6

五、指標陣列和陣列指標

  • 指標陣列是一個陣列,其元素都是指標型別;
  • 陣列指標是一個指標,指向一個陣列。
  • 範例程式碼:
#include <stdio.h>

int main() {
    int arr1[] = {1, 2, 3, 4, 5};  // 陣列
    int *arr2[5];  // 指標陣列
    int (*arr3)[5];  // 陣列指標

    int i;

    // 初始化指標陣列
    for (i = 0; i < 5; i++) {
        arr2[i] = &arr1[i];
    }

    // 列印指標陣列中的元素
    printf("指標陣列中的元素:\n");
    for (i = 0; i < 5; i++) {
        printf("%d ", *arr2[i]);
    }

    // 初始化陣列指標
    arr3 = &arr1;

    // 列印陣列指標指向的陣列中的元素
    printf("\n陣列指標指向的陣列中的元素:\n");
    for (i = 0; i < 5; i++) {
        printf("%d ", (*arr3)[i]);
    }

    return 0;
}
  • 我們定義了一個整型陣列arr1,一個指標陣列arr2和一個陣列指標arr3

  • 指標陣列arr2是一個包含5個元素的陣列,每個元素都是一個指向整型變數的指標。

  • 我們使用arr2[i] = &arr1[i]將指標陣列的每個元素指向arr1陣列的對應元素。

  • 然後,我們通過*arr2[i]解除參照指標陣列中的每個元素,並列印出其值。

  • 陣列指標arr3是一個指向包含5個整型元素的陣列的指標。

  • 我們通過arr3 = &arr1將陣列指標指向arr1陣列。

  • 然後,通過(*arr3)[i]存取陣列指標所指向的陣列中的每個元素,並列印出其值。

  • 輸出結果

指標陣列中的元素:
1 2 3 4 5
陣列指標指向的陣列中的元素:
1 2 3 4 5

小結

通過這篇文章,我們學會了

1、利用指標存取和遍歷陣列

2、指標陣列和陣列指標的區別