首页 > 编程语言 >C++指针函数

C++指针函数

时间:2023-06-26 22:57:15浏览次数:39  
标签:compare return 函数 int C++ 函数指针 指针

指针函数

指针函数有些像C#中的委托delegate(不知道理解的对不对)。

定义函数指针

int *compare(int, int );

一般简写为

typedef int (*compare)(int,int);

这样就定义了一个名为compare的函数指针。compare指针类型为:指向返回int类型并带有两个int参数的函数的指针。

函数指针只能通过同类型函数、函数指针 、常量0初始化。函数指针初始化为0,和指针初始化为0是一样的 ,都表示不指向任何对象。
int intCompare(int x,int y){
    if (x == y)
        return 0;
    else if (x > y)
        return 1;
    else
        return -1;
}
int main(int argc, char const *argv[])
{
    typedef int (*compare)(int x, int y);
    compare com = intCompare;
    int reslut1 = (*com)(1, 2); // 显示调用
    std::cout<< reslut1<<endl;
    //console : -1
    int reslut2 = com(2, 2); // 隐式调用
    std::cout << reslut2 << endl;
    // console : 0
    int reslut3 =intCompare(2,1); //直接调用函数
     // console : 1
}

函数指针做形参

以函数指针做形参的函数的定义有两种

void defPointFun(int fun(int ,int ))
{
    //todo somethings
}

另一种

void defPointFun(int (*fun)(int ,int ))
{
  //todo somethings
}

还没有想到适用的场景,可能随着学习的深入和遇到的业务场景的增加,会有实际使用的场景

函数返回函数指针

函数指针也可以做函数的返回值。《C++ Primer》 中讲“正确写出这种返回类型相当不容易”。故此,暂时先不去研究它了。

标签:compare,return,函数,int,C++,函数指针,指针
From: https://www.cnblogs.com/pangzishuoma/p/17507355.html

相关文章

  • pytest + yaml 框架 -43.支持自定义函数提取返回结果
    前言在yaml用例中提取返回结果,可以支持以下三种表达式jmespath取值语法:body.keyname.keynamejsonpath语法:$..keynamere正则语法以上三种表达式可以满足99%的测试场景需求了,但是有些特殊的需求通过表达式无法取到,为了满足另外1%的需求,可以自定义函数取值。此功......
  • C++ 指针形参与引用参数
    指针形参与引用参数指针形参指针作形参时,若在函数中修改指针对象的值,则对应实参的值会对应修改。#include<iostream>usingnamespacestd;voidChange(int*p){*p=400;};intmain(intargc,charconst*argv[]){intvalue=1;int*argsPiont=&va......
  • C++11特性简单介绍
    自动类型推导autoautox=10;//推导x为int类型autostr="Hello";//推导str为constchar*类型基于范围的For循环for(int&i:someDataStructure){doSomething();}for(inti:someDataStructure)doSomething();在上面的两个for循环中,第一个使用引用,第二个启用按......
  • PHP htmlspecialchars() 函数
    htmlspecialchars()函数把预定义的字符转换为HTML实体。<?php$str="Thisissome<b>bold</b>text.";echohtmlspecialchars($str);?> htmlspecialchars()函数把预定义的字符转换为HTML实体。预定义的字符是:&(和号)成为&"(双引号)成为"'(单引号)成为'......
  • JS 函数的三种声明方式
    <!DOCTYPEhtml><metacharset="UTF-8"><script>//----函数的三种声明方式----//1、自定义函数:functionf1(){ console.log("f1f1f1f1");}//调用方式:函数名f1();//特点://(1)函数声明的函数在JS预解析的时候,会提升到作用域的最前面//(2)函数声明中的函数,可以在声明之前调......
  • transformCreateStmt 函数源码分析
    函数transformCreateStmt功能在执行器阶段对createtable命令做一些处理:列属性处理条件限制处理likeClause处理如果需要,给表名加上当前schema的名字等等。。。函数签名List*transformCreateStmt(CreateStmt*stmt,constchar*queryString)输入参数CreateSt......
  • 二分查找(函数)
    #include<stdio.h>intbinary_search(intarr[],intk,intsz){ intleft=0; intright=sz-1; while(left<=right) { intmid=(left+right)/2; if(arr[mid]>k) { right=right-1; } elseif(arr[mid]<k) { ......
  • 二分查找(函数)
    #include<stdio.h>intbinary_search(intarr[],intk,intsz){ intleft=0; intright=sz-1; while(left<=right) { intmid=(left+right)/2; if(arr[mid]>k) { right=right-1; } elseif(arr[mid]<k) { ......
  • Pytorch | `torch.multiprocessing.spawn` 函数的使用
    torch.multiprocessing.spawn是PyTorch中用于启动多进程的函数,可以用于分布式训练等场景。其函数签名如下:torch.multiprocessing.spawn(fn,args=(),nprocs=1,join=True,daemon=False,start_method='spawn',)参数:fn(function)–函数被称......
  • 素数的判断(函数)
    #include<stdio.h>#include<math.h>intis_prime(intn){ intj=0; for(j=2;j<=sqrt(n);j++) { if(n%j==0) return0; } return1;}intmain(){ inti=0; for(i=101;i<=200;i+=2) { if(is_prime(i)==1)......