zoukankan      html  css  js  c++  java
  • 【C语言】一招搞定C语言各种复杂指针

    从变量名开始看,一步步往外分析。

    1. int *p1;

    定义了一个变量 p1 ,前面的 * 表示 p1 是一个指针,指向什么?指向一个 int 类型的数据。

    2. int *p2[5];

    从变量名看,定义了一个变量 p2 。注意, [] 的优先级比 * 高,所以 p2 是一个数组。数组的每个元素是什么类型?前面的 * 表示每个元素都是指针。指向什么?指向一个 int 类型的数据。

    3. int (*p3)[5];

    从变量名看,定义了一个变量 p3 。因为用 () 改变了优先级,所以先看 ** 表示 p3 是一个指针。指向什么?注意,表示数组的 int [5] 也是一种类型,所以 p3 是一个二维数组指针。(一维数组指针指向的是数组的第0个元素。二维数组同理,指针指向的是二维数组的第0个元素,也即一个一维数组)

    4. int *p4(int, int);

    这不是指针,这是声明了一个函数 p4() 。返回值是指向 int 类型的指针,参数是 int, int

    5. int (*p5)(int, int);

    从变量名看, p5 是一个指针,后面的 () 是函数参数,所以 p5 是一个函数指针。函数的返回值是 int ,参数是 int, int

    6. int *(*p6)(int, int);

    p6p5 大致相同,除了指向的函数的返回值是 int * (指向 int 类型的指针)。或者你也可以理解为 p6 是指向 p4() 函数的函数指针。

    7. int *(*p7[5])(int, int);

    p7 是一个指针数组,每个元素都是和 p6 一样的函数指针。

  • 相关阅读:
    练习
    圆形时钟
    鼠标经过改变颜色
    Java基础知识精华部分(个人总结)
    Java随机数总结
    java 获取随机数字的三种方法
    网站开发人员应该知道的61件事
    人人都该了解的十大算法
    String 字符串
    面向对象 JAVA代码
  • 原文地址:https://www.cnblogs.com/HuZhixiang/p/12762694.html
Copyright © 2011-2022 走看看