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)
{
    //字符串结尾符号是 \0
    int i = 0;
    while(str[i] != '\0')
        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\n",str);
    }else
    {
        printf("未找到!\n");
    }
}

//主函数 
int main()
{
    //定义变量
    char str[50],str_sub[50];
    char *str_result;

    printf("直接调用函数:\n");
    input(str,str_sub);
    str_result = str_search(str,str_sub);
    print(str_result);

    printf("使用指针函数调用:\n");
    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) 就是函数指针

posted @ 2013-10-18 16:55  trenail  阅读(272)  评论(0编辑  收藏  举报