void (*Pfun(int, void(*Qfun)(int))) (int)

#include <iostream>
using namespace std;
typedef void(*PF)(int);
void fun(int a)
{
    cout << "这里是参数是整形的函数fun(int)" << endl;
}

void Printf(int a)
{
    cout << "这里是参数是整形的函数Printf(int)" << endl;
}
void(*Pfun(int, void(*Qfun)(int))) (int)
{
    //1.首先这是一个函数,函数名字是Pfun,参数有两个,一个是整形,一个是函数指针。
    //2.其次这个函数的返回值是指向函数的指针,类型是:void (*PF)(int)。
    PF q = Qfun;
    (*q)(4);
    //此处证明参数是一个整形与一个函数指针。
    PF  p = fun;
    return p;
}
int main()
{
    PF q = Printf;//函数指针指向函数.
    PF p = Pfun(2, q);
    (*p)(3);//此处是测试返回值的,此处证明返回值是一个函数指针。
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 17:58:17

void (*Pfun(int, void(*Qfun)(int))) (int)的相关文章

void (*f(int, void (*)(int)))(int) 函数解析 转

函数指针 今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者抓不到重点, 结果弄的一头污水.这里就简单介绍一下这中函数指针的定义方法. 什么是函数指针? 这个问题从定义的角度来看很好理解,指向函数的指针就是函数指针,但是我们如何声明一个函数指针呢?又如何将一个地址强制转换为某一个类型的函数指针呢?这里看下面一个例子源码: void function

TrackbarCallback 回调函数必须为 void(int,void*)

TrackbarCallback 回调函数必须为 void(int,void*),如果你用了传其它参数的函数,对不起,报错与cv::TrackbarCallback类型的形参不兼容. 同时,这也代表里面用的参数可能得设置成全局变量了,虽然有时候设置过多的全局变量回很复杂,但这里似乎不可避免,首先这里的参数肯定有需要改变的,不能用define,不然你也没必要使用trackbar,其次就是上面说的,会调函数不能传参,也就是每次修改以后,不能通过传参让回调函数知道"这个参数已经被改变了,重新给我算一次

数组冒泡排序,文件读取,数据库读取,string类型的int数组转换成int数组

排序方式(枚举) 1 public enum SortBy 2 { 3 Asc, 4 Desc 5 } 数组冒泡排序方法 1 public class SortEntity 2 { 3 public static int[] SortArray(int[] array,SortBy sortby) 4 { 5 int flag; 6 switch (sortby) 7 { 8 case SortBy.Asc: 9 for (int i = 0; i < array.Length - 1; i++

【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include<stdio.h> void itob(int n,char s[], int b) {  int i=1;  for(;i<=32;i++)    //共循环了32次,保证得到32位的二进制数  {   s[i-1]= n % b;   //数组是从编号0开始的,一直到编号31结束   n = n/b ; //用模除的方法依次得到每位进制数  }  for(i=32;i>0;i--)  {   printf("%d",s[i-1]);   }

编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Stud

package com.homework.zw; //student类部分 public class Student { int stuNo; String name; int age; void output() { System.out.println("学号:"+stuNo); System.out.println("姓名:"+name); System.out.println("年龄:"+age); } } package com.hom

编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。

在本题中,二进制.八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出.在十六进制中"0123456789abcdef"[num%16],求出各位的数字. #include<stdio.h> void reverse(int len,char arr[]) //逆置 {  int left =0;  int right =len -1;  while(left < right)  {   char temp = arr[left];     

ipv4地址向int型转换,int型数据向ipv4转换。

将一个ip地址格式的字符串转换为一个int型(4字节32位)的数据.例如 char *p = "192.168.001.001"; 函数实现如下: int ipv4_to_int(char *ip) { int tmp = 0; char ip1, ip2, ip3, ip4; ip1 = atoi(ip); ip = strchr(ip, '.'); if(!ip) return -1; ip2 = atoi(++ip); ip = strchr(ip, '.'); if(!ip)

将一个int数组变为一个int整数

一个面试题: java 实现将一个int数组变为一个int整数.例如:int[] arr = new int[]{1,2,3,4,5}; 变为12345 /**  * Created by leo on 15/10/27.  */ public class Interview {     public static void main(String[] args) {         System.out.println(parseInt(new int[]{1,2,3,4,5}));     

C# 使用int.TryParse,Convert.ToInt32,(int)将浮点类型转换整数时的区别

int.TryParse,Convert.ToInt32,(int) 这几种类型在将浮点类型转换整数时是有差别 Convert.ToInt32则会进行四舍五入 int.TryParse只能转换整数,即浮点类型全部会返回0 (int)不会进行四舍五入,只取整数部分,小数点部分完全舍弃 using  System;public   class  DoubleToInt{     public   static   void  Main()    {        Test_DoubleToInt(