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 变量的值。

posted @ 2025-03-08 15:20  freshman_xy  阅读(218)  评论(0)    收藏  举报  来源