C語言中指針數(shù)組和數(shù)組指針的區(qū)別

2023-08-17 17:26:32 來源:知微之見


(資料圖)

前言

指針和數(shù)組之間存在著緊密的關系。在本文中,我們將探討指針和數(shù)組的關系、指針算術和數(shù)組遍歷、多維數(shù)組與指針以及指針數(shù)組和數(shù)組指針。

一、人物簡介

第一位閃亮登場,有請今后會一直教我們C語言的老師 —— 自在。第二位上場的是和我們一起學習的小白程序猿 —— 逍遙。

二、指針和數(shù)組的關系

在C語言中,數(shù)組名是指向數(shù)組首元素的指針。示例代碼:
#include < stdio.h >int main() {    int arr[5] = {1, 2, 3, 4, 5};    int *ptr = arr; // 數(shù)組名作為指針使用        // 使用指針訪問數(shù)組元素    printf("ptr指向 %d n", *ptr);    return 0;}
在上述示例中,我們將數(shù)組名arr賦給指針ptr,并使用*ptr訪問數(shù)組的第一個元素。輸出結(jié)果
ptr指向 1

三、指針算術和數(shù)組遍歷

指針算術允許我們通過增加或減少指針的值來訪問數(shù)組中的不同元素。通過改變ptr的值,實現(xiàn)對數(shù)組的遍歷示例代碼:
#include < stdio.h >int main() {    int arr[5] = {1, 2, 3, 4, 5};    int *ptr = arr;    // 使用指針算術訪問數(shù)組元素    for(int i = 0; i < 5; i++) {        printf("ptr指向 %d n", *(ptr + i));    }    return 0;}
輸出結(jié)果
ptr指向 1ptr指向 2ptr指向 3ptr指向 4ptr指向 5

四、多維數(shù)組與指針

C語言中支持多維數(shù)組,我們同樣可以使用指針來訪問多維數(shù)組的元素。示例代碼:
#include < stdio.h >int main() {    int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}};    int (*ptr)[2] = arr;    // 使用指針訪問多維數(shù)組元素    for (int i = 0; i < 3; i++) {        for (int j = 0; j < 2; j++) {            printf("%d ", *(*(ptr + i) + j));        }        printf("n");    }    return 0;}
我們定義了一個二維數(shù)組arr,并將其賦給指針ptr。通過使用指針算術和雙重指針解引用,訪問了多維數(shù)組中的每個元素。輸出結(jié)果
1 23 45 6

五、指針數(shù)組和數(shù)組指針

指針數(shù)組是一個數(shù)組,其元素都是指針類型;數(shù)組指針是一個指針,指向一個數(shù)組。示例代碼:
#include < stdio.h >int main() {    int arr1[] = {1, 2, 3, 4, 5};  // 數(shù)組    int *arr2[5];  // 指針數(shù)組    int (*arr3)[5];  // 數(shù)組指針    int i;    // 初始化指針數(shù)組    for (i = 0; i < 5; i++) {        arr2[i] = &arr1[i];    }    // 打印指針數(shù)組中的元素    printf("指針數(shù)組中的元素:n");    for (i = 0; i < 5; i++) {        printf("%d ", *arr2[i]);    }    // 初始化數(shù)組指針    arr3 = &arr1;    // 打印數(shù)組指針指向的數(shù)組中的元素    printf("n數(shù)組指針指向的數(shù)組中的元素:n");    for (i = 0; i < 5; i++) {        printf("%d ", (*arr3)[i]);    }    return 0;}
我們定義了一個整型數(shù)組arr1,一個指針數(shù)組arr2和一個數(shù)組指針arr3。指針數(shù)組arr2是一個包含5個元素的數(shù)組,每個元素都是一個指向整型變量的指針。我們使用arr2[i] = &arr1[i]將指針數(shù)組的每個元素指向arr1數(shù)組的對應元素。然后,我們通過*arr2[i]解引用指針數(shù)組中的每個元素,并打印出其值。數(shù)組指針arr3是一個指向包含5個整型元素的數(shù)組的指針。我們通過arr3 = &arr1將數(shù)組指針指向arr1數(shù)組。然后,通過(*arr3)[i]訪問數(shù)組指針所指向的數(shù)組中的每個元素,并打印出其值。輸出結(jié)果
指針數(shù)組中的元素:1 2 3 4 5數(shù)組指針指向的數(shù)組中的元素:1 2 3 4 5

小結(jié)

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

1、利用指針訪問和遍歷數(shù)組

2、指針數(shù)組和數(shù)組指針的區(qū)別

標簽:

上一篇:C語言中指針的基本概念和用法
下一篇:最后一頁