zoukankan      html  css  js  c++  java
  • 指针函数与函数指针

    指针函数:->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
    ",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
    ",calc(add,3,5));
    	printf("3-5=%d
    ",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
    ", num1, op, num2, calc(fp, num1, num2));
    
    	return 0;
    }
    

      

  • 相关阅读:
    杭电 oj2602~(0-1背包问题)
    杭电oj~1005 简单的找周期
    poj 2524~并查集基础
    poj 1611~并查集基础
    poj1182~食物链~带权并查集
    杭电 oj3047~带权并查集
    杭电 oj1232~并查集
    杭电 oj2033~
    VS2013使用过程中出现的一些问题:
    python学习笔记:
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/11147191.html
Copyright © 2011-2022 走看看