## 前言 指針和數組之間存在著緊密的關係。在本文中,我們將探討指針和數組的關係、指針算術和數組遍歷、多維數組與指針以及指針數組和數組指針。 ## 一、人物簡介 - 第一位閃亮登場,有請今後會一直教我們C語言的老師 —— 自在。 ![img](https://img2023.cnblogs.com/ ...
前言
指針和數組之間存在著緊密的關係。在本文中,我們將探討指針和數組的關係、指針算術和數組遍歷、多維數組與指針以及指針數組和數組指針。
一、人物簡介
- 第一位閃亮登場,有請今後會一直教我們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、指針數組和數組指針的區別