指针数组和数组指针有什么区别?
时间: 2023-12-06 12:36:37 浏览: 81
指针进阶之指针数组和数组指针
5星 · 资源好评率100%
指针数组和数组指针的区别如下:
1. 定义方式不同:指针数组定义为 int *p[n];,其中p是一个数组,包含n个指向int类型的指针;而数组指针定义为 int (*p)[n];,其中p是一个指向int类型的指针,指向一个长度为n的一维数组。
2. 指向的对象不同:指针数组中每个元素都是一个指针,指向不同的int类型变量;而数组指针指向的是一个一维数组,数组中的元素都是int类型变量。
3. 访问方式不同:指针数组可以通过下标访问每个指针指向的变量,也可以通过指针间接访问;而数组指针只能通过指针加下标的方式访问数组中的元素。
下面是一个指针数组和数组指针的例子:
```c
#include <stdio.h>
int main() {
int a = 1, b = 2, c = 3;
int *arr[3] = {&a, &b, &c}; // 定义指针数组
int (*p)[3] = &arr; // 定义数组指针
printf("%d %d %d\n", *arr[0], *arr[1], *arr[2]); // 输出:1 2 3
printf("%d %d %d\n", (*p)[0], (*p)[1], (*p)[2]); // 输出:1 2 3
return 0;
}
```
阅读全文