• 函数指针实战


    1、本次演示的是用函数指针指向不同的函数来实现同一个调用执行不同的结果。

    2、补充点:Linux命令行默认是行缓冲的,意思就是说当我们程序printf输出的时候,Linux不会一个字一个字的输出我们的内容,而是将其缓冲起来放在缓冲区等一行准备完了再一次性把一行全部输出出来(为了效率)。Linux判断一行有没有完的依据就是换行符‘ ’(windows中是 ,Linux中是 ,ios中是 )。也就是说你printf的再多,只要没遇到 (或者是程序终止,或者是缓冲区满)都不会输出而会不断缓冲,这个时候你是看不到内容输出的。因此在每个printf打印语句后面一定要加 ,否则可能导致误判。

    3实例代码演示:

     1 #include <stdio.h>
     2 
     3 int add(int a, int b);
     4 int sub(int a, int b);
     5 int mul(int a, int b);
     6 int dir(int a, int b);
     7 
     8 typedef int (*pFunc)(int ,int);
     9 
    10 int main(void)
    11 {
    12     pFunc p1 = NULL;
    13     int a = 0, b = 0;
    14     char c = 0;
    15     printf("请输入要运算的数字:
    ");
    16     scanf("%d %d",&a, &b);
    17     printf("请输入运算法则: + - * / 
    ");
    18     do
    19     {
    20         scanf("%c",&c);
    21     }while(c == '
    ');
    22     switch(c)
    23     {
    24         case '+':
    25             p1 = add;
    26             break;
    27         case '-':
    28             p1 = sub;
    29             break;
    30         case '*':
    31             p1 = mul;
    32             break;
    33         case '/':
    34             p1 = dir;
    35             break;            
    36     }
    37     printf("%d
    ",p1(a,b));
    38     return 0;
    39 }
    40 int add(int a, int b)
    41 {
    42     return a + b;
    43 }
    44 int sub(int a, int b)
    45 {
    46     return a - b;
    47 }
    48 int mul(int a, int b)
    49 {
    50     return a * b;
    51 }
    52 int dir(int a, int b)
    53 {
    54     return a / b;
    55 }
  • 相关阅读:
    HDU 1863 畅通工程(并查集)
    HDU 1232 畅通工程
    洛谷 1162 填涂颜色 (dfs,染色法)
    HDU 2689 sort it(树状数组 逆序数)
    mod_js.so下载 转自网络
    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    B计划 第七周
    B计划 第六周
    B计划 第五周
    B计划 第四周(开学第一周)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11383699.html
Copyright © 2020-2023  润新知