美文网首页
C语言---数组指针与指针数组

C语言---数组指针与指针数组

作者: 教训小磊 | 来源:发表于2022-04-14 02:09 被阅读0次

数组指针和指针数组是两个容易搞混的概念,接下去我们对它们进行一个详细的分析。
首先,理解一下数组指针和指针数组这两个名词:

  • 数组指针:数组的指针,是一个指针,指向数组的指针。
  • 指针数组:指针的数组,是一个数组,装着指针的数组。

然后,先明确一个优先级顺序:()>[]>* ,所以:

  • 数组指针(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”。
  • 指针数组* p[n]:根据优先级,先看[],则p是一个数组,再结合*,这个数组的元素是指针类型,共n个元素,这是“指针的数组”。

以下面两个示例进行进一步分析

int *p1[5];
int (*p2)[5];
  • int *p1[5] :因为 [] 的优先级高于 * ,所以p1先与 [] 结合,构成一个数组的定义,数组名为p1,而 “int *”修饰的是数组的内容,即数组的每个元素。也就是说,该数组包含5个指向int类型数组的指针,如下图一所示,它是一个指针数组。 图一 指针数组
  • int (* p2)[5]:()的优先级高于 [ ] ,“ * ”和p2构成一个指针的定义,指针变量名为p2,而int 修饰的是数组的内容,即数组的每个元素。也就是说,p2是一个指针,它指向一个包含5个int类型数据的数组,如图二所示,它是一个数组指针。PS:数组指针也称一维数组的指针,所以数组指针也称行指针,即使用过程中,需要将二维数组的行地址赋给这个指针使用。

    图二 数组指针

由此可见:

  • 对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;
  • 对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在32位系统下永远占4个字节,至于它指向的数组占多少字节,这个是不能确定的,要看具体情况。

下面展示两个实际例子:

#include<stdio.h>

int main()
{
    char a[3][20] = { "aaa","bbb","ccc" };   
    char(*p)[20];                             //数组指针
    p = a; // 等于 p=&a[0] 即把二维数组a的 第0行首地址赋给p
    for (int i = 0; i < 3; i++)
    {
        printf("%s\n", p++);
    }

    char* p[3] = { "aaa","bbb","ccc" };      //指针数组
    for (int i = 0; i < 3; i++)
    {
        printf("%s\n", p[i]);
    }
    return 0;
}

相关文章

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组&数组指针

    本节继续讨论C语言中的指针。 指针数组&数组指针 先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • 指针与数组的区别和联系

    原文地址:指针与数组的区别和联系作者:zhenhuaqin 一.指针与数组的联系: 指针与数组是C语言中很重要的两...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • ndk02_指针运算,函数参数与指针,数组指针,二级指针

    一、指针运算 二、数组与指针 三、指针和函数参数 四、指针数组 五、 二级指针 六、知识要点 1、C语言中的函数如...

网友评论

      本文标题:C语言---数组指针与指针数组

      本文链接:https://www.haomeiwen.com/subject/ebwzsrtx.html