zoukankan      html  css  js  c++  java
  • c语言的函数指针和函数指针数组的简单demo

    今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅。

     

     1 #include <cstdio>
     2 #include <Windows.h>
     3 
     4 typedef void(*myFun)(const char*);//这里定义的一个函数类型(返回值为void,参数为const char*),类型名为myFun,使用见第28行
     5 
     6 void(*func)(const char* name); //声明了一个函数指针,指针名为func
     7 
     8 //下面定义的3个函数,就函数名不一样,函数体是一样的,这里只是方便演示,意思一下而已。
     9 void func1(const char* name)
    10 {
    11     printf("this is %s function
    ",name);
    12 }
    13 void func2(const char* name)
    14 {
    15     printf("this is %s function
    ", name);
    16 }
    17 void func3(const char* name)
    18 {
    19     printf("this is %s function
    ", name);
    20 }
    21 
    22 //定义一个函数指针数组(返回值为void,参数为const char*的函数指针(名)都可以放在这数组里)
    23 void(*fun[])(const char* name) =
    24 {
    25     func1,func2,func3
    26 };
    27 
    28 //定义一个选择使用哪个函数的函数,返回值是函数指针
    29 myFun choiceFun(const char* name)  //如果没用第三行的typedef定义,这里应该这样写:void (*choiceFun(const char* name))(const char*){....函数体}
    30 {
    31     if (0 == strcmp(name, "1"))
    32     {
    33         return fun[0];
    34     }
    35     else if (0 == strcmp(name, "2"))
    36     {
    37         return fun[1];
    38     }
    39     else if (0 == strcmp(name, "3"))
    40     {
    41         return fun[2];
    42     }
    43     else
    44     {
    45         printf("未找到相应函数,将返回null指针
    ");
    46         return NULL;
    47     }
    48 }
    49 
    50 
    51 int main()
    52 {
    53     char input_self[127] = {0};//用来接收用户的输入
    54     
    55     while (1)
    56     {
    57         printf("请输入方法几?
    ");
    58         if (scanf("%s", &input_self) != EOF) //按下ctrl+z就代表结束
    59         {
    60             func = choiceFun(input_self); //根据用户的输入来决定返回哪一个函数
    61             if (func != NULL) //确认函数指针有效,才能执行!
    62             {
    63                 func(input_self);
    64             }
    65         }
    66         else
    67         {
    68             printf("您选择了退出,bye!
    ");
    69             break;
    70         }
    71     }
    72     system("pause");
    73     return 0;
    74 }

     

    最后是运行界面:

     

  • 相关阅读:
    一个布局里面引用另一个布局的控件
    字符串的操作
    代码中使用bitmap资源并加载到控件上
    ui主线程控件的更新就让这个activity的异步任务做完整
    java语法:字符串数组的赋值
    文件路径的格式
    Android布局及属性归总(查询用)
    代码里语句的顺序狠重要。。。
    社交里互评、点赞的实现
    小功能——类似微信里,评论内容里面,点击每个人的用户名进入个人主页
  • 原文地址:https://www.cnblogs.com/dz-study/p/11651392.html
Copyright © 2011-2022 走看看