zoukankan      html  css  js  c++  java
  • 《C语言笔记:指针数组和数组指针》

    一,从字面意思来理解指针数组和数组指针

      1,指针数组:实质是一个数组,这个数组里存放的元素是指针。

      2,数组指针:实质是一个指针,这个指针指向一个数组。

    二,分析指针数组和数组指针的表达式

      int *p[5]; int (*p)[5];int *(p[5])

      1,先说说一般规律。

        int *p;(p是一个指针),int p[5];p是一个数组。在定义一个符号的时候,首先要搞清楚定义个符号是谁(找核心);其次再看谁和核心最近、谁跟核心结合(找结合);以后再继续往外扩展(继续向外结合直到整个符号完)。

      2,如果核心和*结合,表示核心是指针;如果核心和[ ]结合,表示核心是数组;如果核心和( )结合,表示核心是函数。

      3,分析三个符号。

        int *p[5];  核心是p,p首先和[ ] 结合(优先级决定),表示核心是一个数组,数组有五个元素,数组中的元素都是 int *类型的也就是指针,这些指针指向的元素类型是int ,整个符号就是一个指针数组。

        int (*p)[5]; 核心是p,首先和*结合,表示核心是一个指针,这个指针的类型是 int (*)[5]类型,即这个指针指向一个数组,这个数组中有五个int型的元素,整个符号是数组指针。

        int *(p[5]); 核心是p,首先和[ ]结合,表示核心是一个数组,数组有五个元素,数组中的元素都是int *类型也就是指针,这些指针指向的元素类型是int,整个符号是一个指针数组。

    三,分析符号含义三步曲

      1,找核心。2,找结合。3,继续向外扩展结合。

      按照这三步走再复杂的定义也能分析出来。

      比如说一个复杂的:char * (*PType[5])(char *,const char *)。首先核心是PType,先和 [ ] 结合,表示PType是一个数组,这个数组里有五个元素,再和 * 结合,表示这个数组的元素是指针,再和( )结合,表示指针的类型是函数,函数有两个形参,返回值是char *。整体来说,这个符号是一个函数指针数组。

  • 相关阅读:
    Linux之vmware安装
    中秋之美
    青春无悔
    MSP430常见问题之指令系统类
    MSP430常见问题之LCD 显示驱动类
    MSP430常见问题之FLASH存储类
    MSP430常见问题之看门狗及定时器类
    MSP430常见问题之电源类
    MSP430常见问题之通信类
    MSP430常见问题之AD转换类
  • 原文地址:https://www.cnblogs.com/xuxianshen/p/13943468.html
Copyright © 2011-2022 走看看