C语言中数组指针和指针数组有什么区别?
本文介绍数组指针和指针数组的区别,函数指针和指针函数的区别请点击这儿
1、数组指针(Pointer to Array)
本质:指向整个数组的指针。
定义格式:数据类型 (*指针名)[数组大小]
示例:
#include <stdio.h>
int main() {
int arr[3] = {1, 2, 3};
int (*p)[3] = &arr; // p 是指向数组的指针
printf("p 指向的数组首地址:%p\n", p);
printf("p[0][1] 的值是:%d\n", (*p)[1]); // 访问数组的第 2 个元素
return 0;
}
说明:
p 是一个指向包含 3 个 int 元素的数组的指针。
*p 解引用后得到整个数组,所以 (*p)[1] 访问 arr[1]。
2、指针数组(Array of Pointer)
本质:数组中的每个元素都是一个指针,存储多个地址。
定义格式:数据类型 *数组名[数组大小]
#include <stdio.h>
int main() {
int a = 10, b = 20, c = 30;
int *arr[3] = {&a, &b, &c}; // arr 是一个指针数组,每个元素都是一个指向 int 的指针
printf("arr[0] 指向的值:%d\n", *arr[0]); // 输出 10
printf("arr[1] 指向的值:%d\n", *arr[1]); // 输出 20
printf("arr[2] 指向的值:%d\n", *arr[2]); // 输出 30
return 0;
}
说明:
arr 是一个指针数组,存储的是 int 变量的地址。
arr[i] 是一个指针,*arr[i] 解引用后可以获取 int 变量的值。

浙公网安备 33010602011771号