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) 就是函数指针

  • 相关阅读:
    Docker
    Orleans MultiClient 多个Silo复合客户端
    Docker
    C# 动态创建实例化泛型对象,实例化新对象 new()
    .net core UseHttpsRedirection() 正式环境无效
    .NET Core 版本不支持的问题
    Swift 编译时间优化
    test chemes
    Mac下开发常用目录
    文字高度问题
  • 原文地址:https://www.cnblogs.com/trenail/p/3376382.html
Copyright © 2011-2022 走看看