C语言之指针数组与数组指针详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、指针数组
    • 一维指针数组的基本使用
    • 一维指针数组的进阶使用
  • 二、数组指针
    • - 数组为一维数组
    • - 数组为二维数组时
  • 结语

C语言之指针数组与数组指针详解_第1张图片

前言

许多同学在学习指针的时候对于指针数组和数组指针的使用有许多难处,现在我带领同学学习一下指针数组与数组指针的区别和使用


一、指针数组

指针数组是一个数组,可以存放多个指针的值
C语言之指针数组与数组指针详解_第2张图片

  • 一维指针数组的基本使用

int arr1[10];
    int arr2[10];
    int arr3[10];
    int* parr[3];//parr是一个数组,元素类型为int *,可以存放多个指向int数据的指针;
    parr[0] = arr1;//数组名在表达式中转化为指向首元素的指针
    parr[1] = arr2;
    parr[2] = arr3;
    return 0;
  • 一维指针数组的进阶使用

 int** pparr;
    int i,j;
    int arr1[10];
    int arr2[10];
    int arr3[10];
    int* parr[3];//parr是一个数组,元素类型为int *,可以存放多个指向int数据的指针;
    parr[0] = arr1;//数组名在表达式中转化为指向首元素的指针
    parr[1] = arr2;
    parr[2] = arr3;
    pparr = parr;//parr在表达式中使用时转化为指向数组首元素的指针,即转化为int**类型
    *(*pparr+i)+j== parr[i][j];
    return 0;

C语言之指针数组与数组指针详解_第3张图片

二、数组指针

数组指针是一个指针,是一个指向数组的变量,所以我们关心的它是指向几维数组的指针

- 数组为一维数组

    int arr[10]={0};
    int i;
    int* pa;//pa是一个类型为int *的变量,指向一个int数据
    pa = arr;//数组名在表达式中会转化成指向数组首元素的指针
    //*(pa + i) == arr[i];
    return 0;

- 数组为二维数组时

  int arr[3][3] = { 0 };//arr是一个int[10][10]类型的数据;
    int i, j;
    int(*pa)[3];
    int* p;//pa是一个指向int[10]的变量,指向一个一维数组
    pa = arr;//数组名在表达式中会转化成指向数组首元素的指针,即arr[0]的地址
    p = *pa;
    return 0;

C语言之指针数组与数组指针详解_第4张图片

结语

此文章为我第一篇文章,如有错误,还望指正,谢谢

C语言之指针数组与数组指针详解_第5张图片

你可能感兴趣的:(c语言)