指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组和数组指针。
在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、指针数组和数组指针的区别
📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!