指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组和数组指针。
在C语言中,数组名是指向数组首元素的指针。
示例代码:
#include
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
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
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
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、指针数组和数组指针的区别
欢迎各位 点赞 收藏 评论,如有错误请留言指正,非常感谢!
手机扫一扫
移动阅读更方便
你可能感兴趣的文章