指针函数与函数指针

Posted helloworld2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针函数与函数指针相关的知识,希望对你有一定的参考价值。

指针函数:->int*p();

函数指针:->int (*p)();

定义char 类型的指针,返回字符串:

指针函数:使用指针作为返回值的函数

//指针函数
#include<iostream>
char *getchar(char);
char *getchar(char c)
	switch(c)
		case ‘A‘:return "apple";
		case ‘B‘ :return "banana";
		case ‘C‘: return "Cat";
		case ‘D‘: return "Dog";
		default: return "Nome";
	

int main()
	 char input;
	 printf("请输入一个字母");
	 scanf("%c",&input);
	printf("%s\\n",getchar(input)) ;
	 return 0;
 

函数指针;

//指针函数
#include<iostream>
int square(int num)
	return num*num;


int main()
	int num;
	int (*fp)(int);
	printf("请输入一个整数:");
	scanf("%d",&num);
	fp=square;
	printf("%d*%d=%d ",num,num,(*fp)(num));
printf("%d*%d=%d ",num,num,fp(num));//fp相当于函数名
return 0;
 

函数指针作为参数:

//函数指针作为参数:
#include<iostream>
int add(int num1,int num2)
	return num1+num2;

int sub(int num1,int num2)
	return num1-num2;

int calc(int (*fp)(int,int),int num1,int num2)
	return (*fp)(num1,num2);

int main()
	printf("3+5=%d\\n",calc(add,3,5));
	printf("3-5=%d\\n",calc(sub,3,5));	
	
return 0;
 

将函数指针作为返回值

技术图片

#include <stdio.h>

int add(int, int);
int sub(int, int);
int calc(int (*)(int, int), int, int);
int (*select(char))(int, int);

int add(int num1, int num2)

	return num1 + num2;


int sub(int num1, int num2)

	return num1 - num2;


int calc(int (*fp)(int, int), int num1, int num2)

	return (*fp)(num1, num2);


int (*select(char op))(int, int)

	switch(op)
	
		case ‘+‘: return add;
		case ‘-‘: return sub;
	


int main()

	int num1, num2;
	char op;	
	int (*fp)(int, int);
printf("输入一个式子(3-2)");
	scanf("%d%c%d", &num1, &op, &num2);

	fp = select(op);
	printf("%d %c %d = %d\\n", num1, op, num2, calc(fp, num1, num2));

	return 0;

  

 

以上是关于指针函数与函数指针的主要内容,如果未能解决你的问题,请参考以下文章

C语言02 - 指针运算数组与指针指针变量名指针与函数参数指针函数函数指针二级指针

[函数指针]关于函数指针与指针函数

指针函数与函数指针

十六函数指针初级(函数指针与函数调用)

指针函数与函数指针的差别

指针函数与函数指针的区别