首页 > 其他分享 >调用函数指针

调用函数指针

时间:2022-11-21 00:55:38浏览次数:48  
标签:20 int void 调用函数 pFun printf 函数指针 指针

/*
	Design Model:设计模式
	Function:使用函数指针列表搭建程序框架
*/
#include <stdio.h>
#include <stdlib.h>

int hello(int i);
void hey(int i);
int someother(void);
void defaultFunc(void);

typedef void(*PTRFUN)(void);
PTRFUN pFun;

/*************
   主函数
*************/
int main(void)
{
	// 函数指针调用方式
	int (*p)(int);		// 定义需要调用的函数指针结构类型
	p = hello;	    	// 函数指针赋值
	int n = 0;
	(*p)(22);			// 函数指针调用方式一
	printf("*p reruen value=%d\n", n);
	n = p(23);			// 函数指针调用方式二
	printf(" p reruen value=%d\n", n);
	printf("*p=%d\n", *p);
	printf(" p=%d\n", p);
	
	// ----------------------------------------
	// typedef 方法调用函数指针
	// int FUN(void)  OK
	// void FUN(int) OK
	// void FUN(void)     OK
	// 但是为什么void类型不行???
	puts("\n");
	pFun = defaultFunc;
	pFun();
	printf(" pFun reruen value=%d\n", n);
	(*pFun)();
	printf("*pFun reruen value=%d\n", n);
	printf("*pFun=%d\n", *p);
	printf(" pFun=%d\n", p);
	
	exit(EXIT_SUCCESS);
}

/*****************************
		子函数
*****************************/
int hello(int i)
{
    printf("I know you are saying hello %d.\n", i);
	return i + 3;
}
 
void hey(int i)
{
    printf("hey~hey = %d.\n", i);
	//return i;
}
 
int someother(void)
{
    puts("some more out put.");
}
 
void defaultFunc(void)
{
    puts("there is no function for this anyway.");
}


方法

int my_func(int a,int b){
	printf("ret:%d\n", a + b);
	return 0;
}
 
//1. 先定义函数类型,通过类型定义指针
void test01(){
	typedef int(FUNC_TYPE)(int, int);
	FUNC_TYPE* f = my_func;
	//如何调用?
	(*f)(10, 20);
	f(10, 20);
}
 
//2. 定义函数指针类型
void test02(){
	typedef int(*FUNC_POINTER)(int, int);
	FUNC_POINTER f = my_func;
	//如何调用?
	(*f)(10, 20);
	f(10, 20);
}
 
//3. 直接定义函数指针变量
void test03(){
	
	int(*f)(int, int) = my_func;
	//如何调用?
	(*f)(10, 20);
	f(10, 20);
}

标签:20,int,void,调用函数,pFun,printf,函数指针,指针
From: https://www.cnblogs.com/starcos/p/16910161.html

相关文章

  • 指针
    指针是什么在计算机科学中,指针(pointer)是编程语言的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中的另一个地方的值.由于通过地址能够找所需的的变量单元。......
  • 指针的基础知识(上)
    大家晚上好呀,今天要给大家带来的是关于指针的基础知识点。首先,我们都知道如何一个整型的变量,并赋值给它。如:inti=5;但它在电脑中具体的运行是怎么样的呢?其实啊,首先在电脑内......
  • 调用函数来求四个数中的最大数
    输入四个数然后来判断四个数谁最大我们可以有好几种解决方法其一#include<stdio.h>intmain(){floata,b,c,d,t;scanf("%f%f%f%f",&a,&b,&c,&d);if(b>a){......
  • 【c&c++】二级指针的使用
    有时候,我们需要在函数体的内部申请内存空间并初始化,然后将内部申请的存储空间交付给外部指针来引用,这时候,我们可以使用二级指针作为申请空间的函数的参数来实现。main.c......
  • c指针
    intp;//这是一个普通的整型变量int*p;//首先从P处开始,先与*结合,所以说明P是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型.所以P是一个返回整型......
  • 函数指针
     1#include<cstdio>2#include<iostream>3usingnamespacestd;4intmax(intx,inty)5{6returnx>y?x:y;7}8intmain()9{10int......
  • 重载为什么一定要指针才行呢?请专家解答下
    请教专家,为什么下面的代码都是输出A类的方法,而采用指针才能达到重载的目的。1#include<endian.h>2#include<iostream>3usingnamespacestd;45classA......
  • C语言的灵魂——指针
    相关视频——强烈推荐【强烈推荐】4小时彻底掌握C指针-顶尖程序员图文讲解-UP主亲自翻译校对(已完结)_哔哩哔哩(゜-゜)つロ干杯~-bilibili我的小站——半生瓜のblog......
  • 数组指针和指针数组?
    首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针......
  • 代码随想录day1补充之LeetCode27移除元素相向双指针法&补充题目---LeetCode35搜索插入
    1.LeetCode27移除元素题是晚上刷的,今天看发现第一天的题目只写了快慢指针法(见链接Day1),现补充练习实现相向双指针法。分析:相向双指针法是指使用左右指针,左指针寻找需要移......