zoukankan      html  css  js  c++  java
  • 指针数组与数组指针

    指针数组与数组指针

    1.从字面意思来分析指针数组数组指针

    (1)指针数组的实质就是一个(数组),只是这个数组中存在的所有元素是指针变量。(指针数组与数组没有区别
    (2)数组指针的实质是一个(指针),指针指向的是一个数组。

    2.指针数组与数组指针表达式
    (1)int *p[5]; int (*p)[5]; int *(p[5]);


    (2) 一般规律: int *p;(p是一个指针);int p[5](p是一个数组)


    总结:在定义一个符号时,关键在于首先要搞清楚需要定义的符号是什么?(找出谁是关键)
    其次咋看谁跟核心最近,谁跟核心结合(找结合)


    int *p[5];
    分析:首先里面p是整个表达式的核心,而*号和[] 号同时出现,就需要通过符号的优先级来决定p到底先和谁结合,
    上面这个表达式[]号的优先级比*的优先级要高。所以这里的p是先和[]号结合(从这个地方就能看出来当前表达式是
    一个数组),然后再和*号结合(从这个地方可以看出当前表达式是一个指针数组),最后和int结合 所以这个表达
    式 是一个名字叫做p的的指针数组,即其本质是一个数组。只是说这个数组中的所有元素是int *类型的数据。
    综上所述:p是一个数组,数组有五个元素大,数组中的元素是指针,指向所有的元素是int 整个符号就是一个数组指针。


    int (*p)[5];
    分析:首先里面p是整个表达式的核心,由于这里加入了一个()所以优先结合*p(即这里是一个指针),然后整个*p在于[]结合
    组成是一个数组。
    综上所述:p是一个指针,指针指向一个数组,数组中有五个元素,数组中的元素是int型变量,当前表达式 是一个指针数组。

    int *(p[5]);由于[]的优先级本身就比*号的优先级要高所以 当前表达式 等同于 int *p[5];

    注意:符号的优先级到底有什么用?其实是决定当两个符号一起作用的时候决定那个符号先运算,那个符号后运算
    通过查c语言优先级表

  • 相关阅读:
    iOS中block实现的探究
    [ES6] 19. for ... of
    [ES6] 18. Map
    [ES6] 17. Set
    [ES6] 16. Object Enhancements
    [MEAN Stack] First API -- 5. Using $resource to setup REST app
    [AngularJS] Provider
    [MEAN Stack] First API -- 4. Organize app structure
    [AngularJS] ngCloak
    [Angular-Scaled Web] 9. Control your promises with $q
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/10350667.html
Copyright © 2011-2022 走看看