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

    指针函数:返回指针类型的函数,定义方法如下:

    类型标识符 *函数名(参数列表)

    函数指针:指向函数入口地址的指针,定义方法如下:

    类型标识符 (*指针名称)(形参列表)

    下面我们通过一段代码加深我们的理解:

    //指针函数,和函数指针
    
    #include <stdio.h>//引入 输入输出功能 文件头
    
    //定义一个函数指针
    char* (*fun)(char* str,char* str_search);
    
    //实现一个字符串查找的功能
    
    void input(char *str,char *str_search)
    {
        printf("请输入字符串:");
        gets(str);//获取输入字符串
    
        printf("请输入查找字符:");
        gets(str_search);//获取输入字符串
    }
    
    //获取字符串长度
    int str_length(char * str)
    {
        //字符串结尾符号是 
        int i = 0;
        while(str[i] != '')
            i++;
        return i;
    }
    
    //查找字符串,返回子字符串后面的字符
    char* str_search(char *str,char *str_search)
    {
        int length1 = str_length(str);
        int length2 =  str_length(str_search);
        for(int i =0;i<length1-length2+1;i++)
        {
            bool flag = true;
            for(int j = 0;j<length2;j++)
            {
                if(str[i+j] != str_search[j])
                {
                    j = 0;
                    flag = false;
                    break;
                }
            }
            if(flag)
            {
                return str+i;;
            }
        }
        return NULL;
    }
    
    void print(char* str)
    {
        if(str!=NULL)
        {
            printf("查找成功:%s
    ",str);
        }else
        {
            printf("未找到!
    ");
        }
    }
    
    //主函数 
    int main()
    {
        //定义变量
        char str[50],str_sub[50];
        char *str_result;
    
        printf("直接调用函数:
    ");
        input(str,str_sub);
        str_result = str_search(str,str_sub);
        print(str_result);
    
        printf("使用指针函数调用:
    ");
        input(str,str_sub);
        fun = str_search;
        str_result = fun(str,str_sub);
        print(str_result);
    
        return 0;
    }

    其中 char* str_search(char *str,char *str_search) 就是指针函数,   char* (*fun)(char* str,char* str_search) 就是函数指针

  • 相关阅读:
    POJ ACM题分类
    HDU 4438 Hunters (概率 & 期望)
    HDU 1042 N!
    HDU 1073 Online Judge
    PKU 1006 Biorhythms (中国剩余定理 * *)
    HDU 1047 Integer Inquiry
    HDU 2710 Max Factorv (素数模板 & 多种解法)
    HDU A + B Problem II 1002
    第6期(江西省吉安市永丰县)县长手机信箱工作简报(自吹自擂政绩,自圆其说)
    Send mail from ASP.NET using your gmail account
  • 原文地址:https://www.cnblogs.com/trenail/p/3376382.html
Copyright © 2011-2022 走看看