zoukankan      html  css  js  c++  java
  • 函数指针使用演示样例(參考Linux-内核代码)

    本文有xhz1234(徐洪志)编写,转载请注明出处。

    http://blog.csdn.net/xhz1234/article/details/36635083

    作者:徐洪志 


    近期阅读Linux-内核代码。发现非常多地方使用了函数指针,遂自己写一个演示样例程序。以供參阅:

    #include <stdlib.h>
    #include <stdio.h>
    
    #define ADDONE 0
    #define MINUSONE 1
    #define S_OK 0
    #define S_ERR -1
    
    typedef int(*dir_fn)(int *data); //函数指针
    
    //实际函数1
    int add_func(int *data)
    {
    	(*data)++;
    	return S_OK;
    }
    
    //实际函数2
    int minus_func(int *data)
    {
    	(*data)--;
    	return S_OK;
    }
    
    //核心:依据參数cmd,获取相应的func
    dir_fn lookup_ctl(int cmd)
    {
    	dir_fn fn = NULL;
    	switch(cmd)
    	{
    		case ADDONE:
    			fn = add_func;
    			break;
    		case MINUSONE:
    			fn = minus_func;
    			break;
    		default:
    			break;
    	}
    
    	return fn;
    }
    
    
    int main(void)
    {
    	int data = 100;	
    	int cmd = -1;
    	dir_fn fn = NULL;
    	
    	printf("Input the cmd<0 add, 1 minus>
    ");
    	scanf("%d", &cmd);
    
    	fn = lookup_ctl(cmd);
    	
    	fn(&data);
    	
    	printf("Result is: %d
    ", data);
    
    	return 0;
    }
    




    本文有xhz123(徐洪志)编写,转载请注明出处。

    作者:徐洪志 

  • 相关阅读:
    国王游戏
    选数
    双塔
    线段树
    树状数组及其他特别简单的扩展
    折半搜索
    VUE项目
    git_基本使用
    同源
    axios-使用
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6792318.html
Copyright © 2011-2022 走看看