zoukankan      html  css  js  c++  java
  • 返回函数指针: int(*)(int, int)与int *(int, int)的区别

       int(*)(int, int)类型实际上是一个函数指针(指向的函数返回int),而int *(int, int)的类型实际上是一个函数类型(该函数返回int *).同理,int (*)[10]与int *[10]的区别也与之类似(前者为数组指针,后者为存放int指针的数组).

       int(*)(int, int)与int *(int, int)这二者在作为函数的返回类型时,区别明显.请看代码.

     1 #include <iostream>
     2 #include <typeinfo>
     3 using namespace std;
     4 
     5 using PF = int(*)(int, int);//函数指针类型
     6 using PE = int *(int, int);//函数类型;PE *才是函数指针类型, PE * p 等价于int *(*p)(int, int).
     7 
     8 int ff1(int a, int b)
     9 {
    10     return 1;
    11 }
    12 
    13 int i = 1;
    14 int *p = &i;
    15 int  *ff2(int a, int b)
    16 {
    17     return p;
    18 }
    19 
    20 PF f1()
    21 {
    22     cout << "f1" << endl;
    23     return ff1;
    24 }
    25 
    26 PE *f2()
    27 {
    28     cout << "f2" << endl;
    29     return ff2;
    30 }
    31 
    32 int main()
    33 {
    34     cout << "PF = " << typeid(PF).name() << endl;
    35     cout << "PE = " << typeid(PE).name() << endl;
    36     f1();
    37     f2();
    38     return 0;
    39 }

      注意上述PE *的类型.打印结果如下:

    不是尽力而为,而是全力以赴.
  • 相关阅读:
    mysql数据库__Jdbc直接操作__PreparedStatement__新增数据库
    GeneralUtils
    java easyExcel框架
    java8 stream流操作
    Java解析json报文案列
    如何避免空指针?
    List、Map集合的遍历方式
    java---关于多态性
    Android环境的搭建
    css+div学习
  • 原文地址:https://www.cnblogs.com/yang666/p/6793142.html
Copyright © 2011-2022 走看看