指向函数的指针变量

1. 利用指向函数的指针变量写一个函数int count1(char *p),统计输入字符串中的小写字母的个数。在main函数中输入字符串,并输出统计结果。

#include <stdio.h>

int count(char* p)
{
    char* ptr = p;
    int num = 0;
    while(*ptr != '\0')
    {
        if('a' <= *ptr && 'z' >= *ptr)num++;
        ptr++;
    }
    return num;
}
int main()
{
    int (*func_ptr)(char*);//声明函数指针
    func_ptr = count;   //为函数指针赋值
    printf("%d\n",func_ptr("Hello world!\n"));
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-20
#include <stdio.h>

/*
用typedef的方式定义一个函数指针,此处pFunc是指向一个返回值为int型,入参为char *类型的函数。我们当然也可以用int (*pFunc)(char *p)来定义函数指针,其对应赋值语句可写成 pFunc = count1。在调用时用 (*pFunc)(str) 即可,当然也可以直接调用 pFunc(str), 对这两种调用存在着一些分歧
*/
typedef int (*pFunc)(char *p);

int count1(char *p)
{
int count = 0;
while (*p != '\0')
{
if (*p >= 'a' && *p <= 'z')
{
count ++;
}

p ++;
}

return count;
}

int main()
{
char str[] = "aBcDe34Gr";
pFunc p_func; //此处定义了一个函数指针
p_func = count1; //把count1函数的地址赋值给p_func
printf("结果是 :%d\n",(*p_func)(str)); //函数指针调用

//printf("结果是 :%d\n", p_func(str));亦可

return 0;
}
相似回答
大家正在搜