精华内容
下载资源
问答
  • 函数指针指针函数用法区别

    万次阅读 多人点赞 2018-05-24 08:11:10
    函数指针指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,...

    前言

    函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。
    今天这里只讲两个相对简单的,其实上面说那些太复杂的东西也真的很少用,即便是用了理解起来很麻烦,所以莫不如先深刻理解这两个比较容易的,并且项目中比较常用到。

    正文

    先来看看两者的定义以及说明。

    指针函数

    定义

    指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
    声明格式为:*类型标识符 函数名(参数表)

    这似乎并不难理解,再进一步描述一下。
    看看下面这个函数声明:

    int fun(int x,int y);
    

    这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。
    接着看下面这个函数声明:

    int *fun(int x,int y);
    

    这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。

    这样描述应该很容易理解了,所谓的指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。

    指针函数的写法

    int *fun(int x,int y);
    int * fun(int x,int y);
    int* fun(int x,int y);
    

    这个写法看个人习惯,其实如果*靠近返回值类型的话可能更容易理解其定义。

    示例

    (由于本人习惯于 Qt 中进行开发,所以这里为了方便,示例是在 Qt 工程中写的,其语法是一样的,只是输出方式不同)
    来看一个非常简单的示例:

    typedef struct _Data{
        int a;
        int b;
    }Data;
    
    //指针函数
    Data* f(int a,int b){
        Data * data = new Data;
        data->a = a;
        data->b = b;
        return data;
    }
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        //调用指针函数
        Data * myData = f(4,5);
        qDebug() << "f(4,5) = " << myData->a << myData->b;
    
        return a.exec();
    }
    
    

    输出如下:

    f(4,5) =  4 5
    

    注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
    不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下:

    //指针函数
    void* f(int a,int b){
        Data * data = new Data;
        data->a = a;
        data->b = b;
        return data;
    }
    
    调用:
    Data * myData = static_cast<Data*>(f(4,5));
    

    其输出结果是一样的,不过不建议这么使用,因为强制转换可能会带来风险。

    函数指针

    定义

    函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
    声明格式:类型说明符 (*函数名) (参数)
    如下:

    int (*fun)(int x,int y);
    

    函数指针是需要把一个函数的地址赋值给它,有两种写法:

    fun = &Function;
    fun = Function;
    

    取地址运算符&不是必需的,因为一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。

    调用函数指针的方式也有两种:

    x = (*fun)();
    x = fun();
    

    两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数。当然,也要看个人习惯,如果理解其定义,随便怎么用都行啦。

    示例

    int add(int x,int y){
        return x+y;
    }
    int sub(int x,int y){
        return x-y;
    }
    //函数指针
    int (*fun)(int x,int y);
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        //第一种写法
        fun = add;
        qDebug() << "(*fun)(1,2) = " << (*fun)(1,2) ;
    	//第二种写法
        fun = &sub;
        qDebug() << "(*fun)(5,3) = " << (*fun)(5,3)  << fun(5,3);
    
        return a.exec();
    }
    
    

    输出如下:

    (*fun)(1,2) =  3
    (*fun)(5,2) =  2 2
    

    上面说到的几种赋值和调用方式我都分别使用了,其输出结果是一样的。

    二者区别

    通过以上的介绍,应该都能清楚的理解其二者的定义。那么简单的总结下二者的区别:

    定义不同

    指针函数本质是一个函数,其返回值为指针。
    函数指针本质是一个指针,其指向一个函数。

    写法不同

    指针函数:int* fun(int x,int y);
    函数指针:int (*fun)(int x,int y);
    可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
    再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。

    用法不同

    上面已经写了详细示例,这里就不在啰嗦了。

    总而言之,这两个东西很容易搞混淆,一定要深入理解其两者定义和区别,避免犯错。

    另外,本文都是针对普通函数指针进行介绍,如果是C++非静态成员函数指针,其用法会有一些区别,在另外一篇博客中单独介绍,文章在这里

    展开全文
  • 内部函数和外部函数

    千次阅读 2017-07-16 17:49:04
    很多人在问 static extern的区别 或者他们的用途,通过看这篇博客以及我写的全局变量的类型的那篇博客相信大家都会...在定义内部函数时,在函数和函数类型前加 static .如下: static 类型标识符 函数名 () {

    很多人在问 static 和extern的区别  或者他们的用途,通过看这篇博客以及我写的

    全局变量的类型的那篇博客相信大家都会深深的理解他俩的用途和区别。


    1.内部函数
    如果一个函数只能被本文件中的其他函数所调用,称它为内部函数。内部函数又称为静态函数。在定义内部函数时,在函数名和函数类型前加 static .如下:
    static 类型标识符 函数名 ()
    {
    函数体。
    }
    使用内部函数,可以使函数的作用域只局限于所在文件,在不同的文件中又同名的内部函数,互不干扰。通常把只能由同一文件使用的函数和外部变量放在一个文件夹中,在它们前面加上static使其局部化,其他文件不能调用。

    2.外部函数
    除内部函数外,其余的函数都可以被其他文件中的函数所调用,同时在调用的函数的文件上应加上 extern 关键字说明。定义如下:
    extern 类型标识符 函数名 ()
    {
    函数体。
    }
    c语言规定,如果在定义函数时省略 extern ,则默认为外部函数。

    展开全文
  • 函数函数

    万次阅读 多人点赞 2013-12-28 14:42:48
    函数和内函数法式基本的求解有约束条件的最优化问题的方法。 函数法通过在非可行域上加上很大的惩罚,迫使解在可行域,从而求解。 函数法通过在可行域边界上筑起高墙,使得函数无法穿透边界,从而...

    SUMT技术

    之前的两篇blog讨论了等式最优化的最优性条件和不等式最优化的最优性条件。

    http://blog.csdn.net/ice110956/article/details/17557795 )

    http://blog.csdn.net/ice110956/article/details/17562429 )

    关于无约束问题,我们通过最优性条件能够直接求出解,那么这种方法称为解析法。

    但是,对于有约束问题的一般情况是,我们很难通过最优性条件来得到最优解。通常情况下,使用KKT条件求解时,我们要求与约束个数同阶的矩阵的逆。我们可以容易验证某个点是否是最优解,但是很难直接求解。

    由于无约束的最优化问题我们已经有了许多高效的解法,于是,对于有约束的问题,我们可以转化为求解无约束问题,并且用迭代算法来求解。这么方法由称为序列无约束极小化技术SUMT(SequentialUnconstrained Minimization Technique)

     

    外罚函数法

    我们根据约束的特点,构造某种惩罚函数,然后加到目标函数中去,将约束问题求解转化为一系列的无约束问题。这种“惩罚策略”,对于无约束问题求解过程中的那些企图违反约束条件的目标点给予惩罚。如下图:


    通过上述方法,我们可以把有约束的问题化为无约束问题求解。也就是我们的外罚函数法。

     

    实例:

    我们改写为无约束规划:

    其中,我们设为非常大的数。

    那么,当x1,x2不在可行域上时,后一项由于乘了,变为很大的数,对不在可行域上的点加以惩罚,迫使下一次迭代在可行域周围。

    也就是,最优化(2)式的前一部分,得到最优解;最优化后一部分,使得解在可行域上。

    那么(2)式得到的最优解,会是(1)式的最优解吗?外罚函数收敛吗?考虑到公式的数量与日志受欢迎程度成反比,这里直接给出结论:(2)式收敛,并且最优解为(1)式近似最优解。

     

    具体算法:

    我们用迭代算法来求解,这里直接给出迭代结束条件:

    经证明,外罚函数法式收敛的,上式也随着收敛到0.

    当我们固定系数时,可求解无约束问题得到当前最优解,我们算出Xk之后,判断是否满足结束条件,满足则终止。否则修改惩罚力度,以xk为下一次初始点,,继续迭代。

    步骤如下:

     

    缺点:

    1.由于上述都是近似最优并且近似可行的,近似最优可以接受,但是近似可行在实际运用中让人无法接受。这一点内罚函数可以解决;

    2.根据收敛性,越大越好;但是我们直接求解时,用到求导以及hesse矩阵,越大,越趋于病态,也就是不好解,这是乘子法所要解决的问题。

     

    内罚函数法

    相比于外罚函数法在不可行区域加惩罚,内罚函数法在可行域边界筑起高墙,让目标函数无法穿过,就把目标函数挡在可行域内了。

    这种惩罚策略只适用于不等式约束问题,并要求可行域的内点集非空,否则,每个可行点都是边界点,都加上无穷大惩罚,惩罚也就失去意义了。

    考虑不等式约束:


    当x从可行域

    的内部趋近于边界时,则至少有一个ci(x)趋近于零,因此,不难想到可构造如下的增广的目标函数:


    称为内罚函数或障碍函数,参数r仍称为罚因子。

    上述的内罚函数,当x靠近边界时,会迅速增大,迫使在可行域之内进行求解。

    如下图:

     

    具体算法:

    同外罚函数法类似,我们考虑用迭代算法来求解。每次变化得到一个罚因子rk,从前一步关于罚因子rk-1的最优解出发,得到下一步关于rk的最优解;当满足条件是,迭代结束,得到近似最优解。

    经证明,内罚函数法也是收敛的,迭代结束的条件为

    步骤如下:

     


    小结

    1)        由于无约束最优化问题的解法目前已有许多很有效的算法,如DFP,BFGS等,所以在求解复杂得多的约束优化问题是,工程技术人员一般乐于采用罚函数法——SUMT外点法和内点法。

    2)        内点法适用于解含不等式约束问题,并且每次迭代的点都是可行点,这是设计人员所希望的。但要求初始点为可行域的内点,需要相当的工作量,同时它不能处理等式约束;外点法适于解既含等式约束又含不等式约束的优化问题,初始点可以是可行域之外的点,却不能保证近似最优解是可行的。

    3)        罚函数法对于增广的目标函数的Hesse矩阵的条件数随罚因子增大或减小而增大,造成在求解无约束最优化问题时的困难,如何选择罚因子往往进退维谷。如外罚函数法,欲使得无约束问题接近于原约束问题,应该选择尽可能大的罚因子;但为了减轻求解无约束问题的困难,又应选取较小的罚因子,否则增广矩阵病态。这也是罚函数法的固有弱点。


    解决这些问题,就要用到乘子法,关于乘子法,慢慢再整理出来。

    展开全文
  • Hive的内置函数和自定义函数UDF

    万次阅读 2018-01-15 09:04:18
    1 Hive的内置函数 在Hive中给我们内置了很多函数官方地址 也可以在启动hive后输入命令查看函数: SHOW FUNCTIONS; DESCRIBE FUNCTION &lt;function_name&gt;; DESCRIBE FUNCTION EXTENDED &lt;...

    1 Hive的内置函数

    • 在Hive中给我们内置了很多函数官方地址
    • 也可以在启动hive后输入命令查看函数:
    SHOW FUNCTIONS;
    DESCRIBE FUNCTION <function_name>;
    DESCRIBE FUNCTION EXTENDED <function_name>;
    • 查看所有的内置函数
    hive> show functions;
    • 查看函数的具体语法
    hive> DESCRIBE FUNCTION case;
    OK
    CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END - When a = b, returns c; when a = d, return e; else return f
    
    hive> DESCRIBE FUNCTION EXTENDED case;
    
    hive> DESCRIBE FUNCTION EXTENDED case;
    OK
    CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END - When a = b, returns c; when a = d, return e; else return f
    Example:
     SELECT
     CASE deptno
       WHEN 1 THEN Engineering
       WHEN 2 THEN Finance
       ELSE admin
     END,
     CASE zone
       WHEN 7 THEN Americas
       ELSE Asia-Pac
     END
     FROM emp_de
    tails
    

    2 Hive自定义函数

    Hive中的内置函数,比较简单,用到的时候可以在官网进行查询,虽然有很多内置的函数,但是生产上肯定不够那么全面,所有,用户需要自定义函数来满足自身的求
    - 自定义函数开发UDF(官方网址):
    1. 使用maven创建一个java项目
    2. 继承UDF类;
    3. 重写evaluate方法。
    (作者使用的IDEA进行开发的)

    • 创建一个HelloUdf类继承UDF,并且重写evaluate方法
    import org.apache.hadoop.hive.ql.exec.UDF;
    import org.apache.hadoop.io.Text;
    
    import java.io.UTFDataFormatException;
    
    public class HelloUdf extends UDF {
     public Text evaluate (final Text t) {
         if (t == null) return null;
    
         return new Text("Hello:" + t);
     }
       public static void main(String [] args){
           System.out.println(new HelloUdf().evaluate(new Text("hero")));
        }
     }
    • 打jar包这里写图片描述

    • 上传jar包

    [hadoop@zhangyu ~]$ rz
    rz waiting to receive.
    Starting zmodem transfer.  Press Ctrl+C to cancel.
      100%       4 KB    4 KB/s 00:00:01       0 Errors
    [hadoop@zhangyu lib]$ ll
    total 8
    -rw-r--r--. 1 hadoop hadoop 4232 Jan 15  2018 hive-1.0.jar
    
    hive> add jar /home/hadoop/lib/hive-1.0.jar
        > ;
    Added [/home/hadoop/lib/hive-1.0.jar] to class path
    Added resources: [/home/hadoop/lib/hive-1.0.jar]          

    创建自定义函数有两种格式:临时函数,永久函数(0.13版本后):
    官方语法

    create temporary function my_lower as 'com.example.hive.udf.Lower';
    create function my_db.my_lower as 'com.example.hive.udf.Lower';

    3 临时自定义函数(只对当前session有效)

    hive> create temporary function say_hello as 'cn.zhangyu.HelloUdf';
    OK
    hive> select ename,say_hello(ename)from emp;
    OK
    ENAME   Hello:ENAME
    SMITH   Hello:SMITH
    ALLEN   Hello:ALLEN
    WARD    Hello:WARD
    JONES   Hello:JONES
    MARTIN  Hello:MARTIN
    BLAKE   Hello:BLAKE
    CLARK   Hello:CLARK
    SCOTT   Hello:SCOTT
    KING    Hello:KING
    TURNER  Hello:TURNER
    ADAMS   Hello:ADAMS
    JAMES   Hello:JAMES
    FORD    Hello:FORD
    MILLER  Hello:MILLER
    Time taken: 0.119 seconds, Fetched: 15 row(s)
    • 查看jar包
    hive> list jar;
    /home/hadoop/lib/hive-1.0.jar
    • 查看自定义函数
    hive> show functons;

    4 永久函数

    • 把jar包上传到hdfs上
    [hadoop@zhangyu lib]$ hdfs dfs -put /home/hadoop/lib/hive-1.0.jar /lib
    [hadoop@zhangyu lib]$ hdfs dfs -ls /lib
    -rw-r--r--   1 hadoop supergroup       4232 2018-01-14 08:03 /lib/hive-1.0.jar
    • 创建永久函数
    hive> CREATE FUNCTION say_hello1
        > AS 'cn.zhangyu.HelloUdf'
        > USING JAR 'hdfs:///lib/hive-1.0.jar';
    converting to local hdfs:///lib/hive-1.0.jar
    Added [/tmp/7f999adc-e8a4-4642-af56-581f078cdc32_resources/hive-1.0.jar] to class path
    Added resources: [hdfs:///lib/hive-1.0.jar]
    OK
    • 测试
    hive> select ename,say_hello1(ename)from emp;
    OK
    ENAME   Hello:ENAME
    SMITH   Hello:SMITH
    ALLEN   Hello:ALLEN
    WARD    Hello:WARD
    JONES   Hello:JONES
    MARTIN  Hello:MARTIN
    BLAKE   Hello:BLAKE
    CLARK   Hello:CLARK
    SCOTT   Hello:SCOTT
    KING    Hello:KING
    TURNER  Hello:TURNER
    ADAMS   Hello:ADAMS
    JAMES   Hello:JAMES
    FORD    Hello:FORD
    MILLER  Hello:MILLER
    Time taken: 0.084 seconds, Fetched: 15 row(s)

    注意:执行这条语句创建永久函数,show functiuons 会加上默认的数据库名在函数名前。(default.say_hello1)

    5 在MySQL中查询创建的自定义函数

    mysql> select * from funcs;
    +---------+---------------------+-------------+-------+------------+-----------+------------+------------+
    | FUNC_ID | CLASS_NAME          | CREATE_TIME | DB_ID | FUNC_NAME  | FUNC_TYPE | OWNER_NAME | OWNER_TYPE |
    +---------+---------------------+-------------+-------+------------+-----------+------------+------------+
    |       1 | cn.zhangyu.HelloUdf |  1515888313 |     1 | say_hello1 |         1 | NULL       | USER       |
    +---------+---------------------+-------------+-------+------------+-----------+------------+------------+
    1 row in set (0.00 sec)
    展开全文
  • 自调用函数(Self-invoking Functions) 自调用函数也是匿名函数的一种表现形式,这个函数在定义之后,直接调用。如下 (  function(){   alert('haha');  }  )()  看起来还挺怪异,不过确实很简单...
  • 函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用。根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。 一、内部函数 如果一个函数...
  • 指针函数和函数指针

    万次阅读 多人点赞 2019-03-30 16:21:36
    指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数函数指针...
  • js函数内返回一个内部函数详解

    万次阅读 2016-06-14 17:06:01
    通过一道面试题详细解读js函数内返回内部函数的问题。
  • C++中strcpy()函数和strcpy_s()函数的使用及注意事项

    万次阅读 多人点赞 2018-09-04 12:55:18
    在编写C++程序时,不可避免会遇到strcpy()函数和其安全版本strcpy_s()函数,其实之所以会推出_s版本的函数,就是为了使编程更加安全,然而为了保证安全,也就会更容易使我们编写的代码“被报错”。所以这里来简略说...
  • C语言外部函数与内部函数

    万次阅读 2017-12-18 17:09:11
    C语言中,根据函数能否被其他源文件调用,分为内部函数和外部函数 外部函数,可以被其他源文件调用的函数 内部函数,只在定义的文件中有效外部函数开发大型项目,可能包含很多源文件来分别实现,最终,再整合在...
  • C++ 类(构造函数和析构函数)

    万次阅读 多人点赞 2018-07-20 19:00:51
    构造函数和析构函数的由来? 构造函数和析构函数的基本语法 C++编译器构造析构方案 PK 对象显示初始化方案 构造函数的分类以及调用 默认的构造函数 构造函数调用规则 构造函数和析构函数的总结 构造函数和析构...
  • 构造函数和析构函数

    万次阅读 2018-05-30 11:24:57
    通过C++ Primer重新回顾构造函数和析构函数,发现真的好多都忘了… 构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回...
  • 定义&构造函数&析构函数

    千次阅读 2017-02-12 18:57:57
    1.类定义与内联函数 内联函数: (1)类定义时,定义的函数会默认为内联函数(inline);(优先编译为内联函数) (2)类定义 分为同文件类定义分文件类定义。 要写::这个符号(同文件类定义)...
  • main函数外也可以调用函数

    千次阅读 2016-04-13 10:40:52
    并且可能我们都觉得一般的函数调用都是在主函数里面,main函数外满一般不能执行调用函数,那么这句话对吗?函数体外面可以调用函数吗?答案是肯定的,看下面一个实例: #include using namespace s
  • 普通函数和箭头函数的区别

    万次阅读 多人点赞 2019-03-24 14:06:13
    普通函数和箭头函数的区别: 箭头函数的this指向规则: 1. 箭头函数没有prototype(原型),所以箭头函数本身没有this 2. 箭头函数的this指向在定义的时候继承自外层第一个普通函数的this。 3. 不能直接修改箭头函数的...
  • php的匿名函数和闭包函数

    万次阅读 2018-04-11 16:17:00
    引言:匿名函数和闭包函数都不是特别高深的知识,但是很多刚入门的朋友却总是很困惑,因为大家习惯上写了函数就是用来调用的,匿名函数和闭包函数做什么用的? 匿名函数 php官方解释如下: 匿名函数...
  • 构造函数就是当创建一个类的对象时,它被调用来对类的数据成员进行初始化分配内存。拷贝构造函数是一种特殊的构造函数,用基于同一类的一个对象构造初始化另一个对象。当一个类的对象向该类的另一个对象赋值时...
  • 函数和代码复用

    万次阅读 多人点赞 2019-06-06 16:31:41
    1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 ...
  • 伽马函数

    万次阅读 多人点赞 2020-03-18 14:27:08
    伽马函数 当方程的变量是正整数时,方程的值就是正整数的阶乘。在考研数学中,我们经常会利用伽马函数解一些常见的积分,尤其是在概率的题目中应用广泛。 但是如果遇到了(图3-4),这就比较复杂了。 幸好我们有...
  • C++的构造函数和默认构造函数详解

    万次阅读 多人点赞 2019-04-07 15:19:45
    C++的构造函数和默认构造函数 今天学习c++时突然感觉自己对构造函数和默认构造函数的区别有些分不清,于是查找了各大网站将资料汇总一下,供自己其他朋友们参考。 构造函数是c++的类在构造对象时调用的函数,此...
  • Python中的嵌套函数也称为闭包(Closure),有一个特点就是内部函数可以引用外部函数内的变量并且在外部函数返回后保存该引用变量的值;但是如果该引用变量是循环变量时,结果有点变化,下面是例子: def outer(): ...
  • JS 中构造函数和普通函数的区别

    万次阅读 多人点赞 2018-10-04 19:03:53
    1、构造函数也是一个普通函数,创建方式普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数的区别在于:调用方式不一样。作用也不一样(构造函数用来新建实例对象) 3、调用方式不一样。  ...
  • Python如何在main中调用函数内的函数

    万次阅读 2019-06-07 00:37:45
    Python如何在main中调用函数内的函数 一般在Python中在函数中定义的函数是不能直接调用的,但是如果要用的话怎么办呢? 一般情况下: def a():#第一层函数 def b():#第二层函数 print('打开文件B') b()#第二...
  • 函数和纯虚函数的区别

    万次阅读 多人点赞 2012-05-11 22:35:51
    定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个...
  • C语言中函数指针回调函数的详解

    万次阅读 多人点赞 2019-05-18 23:10:01
    函数指针:指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。...函数指针有两个用途:调用函数和函数...
  • C语言常用内置函数

    千次阅读 2017-07-20 11:31:00
    #include <ctype.h> //内置函数头文件 int main() { //常用内置函数 - 0 表示假 非0表示真 printf("%d\n", isupper('a'));//判断是否是大写字母 printf("%d\n", islower('a')); //判断是否是小写字母 printf("%d...
  • Pandas的Apply函数——Pandas中最好用的函数

    万次阅读 多人点赞 2018-02-22 18:22:04
    Pandas最好用的函数 Pandas是Python语言中非常好用的一种数据结构包, 包含了许多有用的数据操作方法。而且很多算法相关的库函数的输入数据结构都要求是pandas数据,或者有该数据的接口。 仔细看pandas的API...
  • MySQL中的IFNULL函数和IF函数

    万次阅读 2018-03-22 19:42:28
    MySQL中的IFNULL函数类似于Oracle中的NVL函数,其表达式为:IFNULL(expr1,expr2),含义是:如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。 IF(expr1,expr2,expr3)类似于Oracle中的NVL2函数,含义是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,496,941
精华内容 3,798,776
关键字:

内函数和外函数