开发者社区> 天飞> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C之函数指针

简介: 这方面的技能,在观察系统调用时,是很需要的。 但我不是很熟悉,另外,要再会函数指针数组的话,那就更强啦~~ 按《HEAD FIRST C》作了个样例: cat find.c #include #include int NUM_ADS = 7; char *ADS[] = ...
+关注继续查看

这方面的技能,在观察系统调用时,是很需要的。

但我不是很熟悉,另外,要再会函数指针数组的话,那就更强啦~~

按《HEAD FIRST C》作了个样例:

cat find.c 
#include <stdio.h>
#include <string.h>

int NUM_ADS = 7;
char *ADS[] = {
  "William: SBM GSOH like sports, TV, dining",
  "Matt: SWM NS likes art, movie, theater",
  "Peter: SHN like out ,art",
  "DWM: DS likes truncks, sports and bieber",
  "Luis: SLM ND likes books, theater, art",
  "Josh: SJM likes sports, movies and theater",
  "Mike: DWM DS likes trucks, sports and bieber"
  };
void find_raw() {
  int i;
  puts("Raw search results:");
  puts("=================");
  for (i = 0; i < NUM_ADS; i++) {
        if (strstr(ADS[i], "sports" )
          && !strstr(ADS[i], "bieber")) {
          printf("%s\n", ADS[i]);
        }
  }
  puts("================");
}
int sports_no_bieber(char *s){
  return strstr(s, "sports") && !strstr(s, "bieber");
}
int sports_or_workout(char *s){
  return strstr(s, "sports") || strstr(s, "workout");
}
int theater_or_dining(char *s){
  return strstr(s, "theater") || strstr(s, "dining");
}

void find(int (*match)(char*) ){
  int i;
  puts("Search results:");
  puts("*******************");
  for (i = 0; i < NUM_ADS; i++) {
    if ((*match)(ADS[i])) {
      printf("%s ;\n", ADS[i]);
    }
    if (!match(ADS[i])) {
      printf("$$$$$$$$$$$$$\n");
    }
  }
  puts("*************************");
}
int main() {
  find_raw();
  find(sports_or_workout);
  find(&theater_or_dining);
  return 0;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【C进阶】* 指针(1)
目录 1. 字符指针 2. 指针数组 3. 数组指针 3.1、数组指针的定义 3.2、&数组名VS数组名 3.3、数组指针的使用 4. 数组参数、指针参数 4.1、一维数组传参 4.2、二维数组传参 4.3、一级指针传参 4.4、二级指针传参
24 0
函数指针
函数名是指向函数的指针 函数指针也是指向函数的指针   --->函数指针与函数名同功能,*pf  = 函数名 *pf 函数名 pf 因此这3个都能调用函数
610 0
C/C++ 指针函数 与 函数指针
指针函数是个函数,是返回指针类型到函数。 函数指针是个指针,是指向函数地址到指针。 区分两者的关键点是,函数名是否用*和括号“包围”起来。 1 #include 2 int *create_node(int); //指针函数声明 3 int *(*fun)(int); //函数指针声明, 指向返回int*且有一个int参数的函数.
665 0
《C和指针》一导读
我在授课时,很早便开始讲授指针,而且在以后的授课过程中也经常讨论指针。我描述它们在各种不同的上下文环境中的有效用法,展示使用指针的编程惯用法(programming idiom)。我还讨论了一些相关的课题如编程效率和程序可维护性之间的权衡。指针是本书的线索所在,融会贯通于全书之中。
1357 0
c指针
内存的编号: 一个字节(8个位)一个字节编号(即 8个1 或者 8个0) 一个字节一个编号:编号即地址。地址(内存单元的编号) 指针: 指针的重要性 1、 表示一些复杂的数据结构 2、快速的传输数据 3、使函数返回一个以上的值 4、能够直接访问硬件 5、能够方便的处理字符串 6、是理解面向对象语言中引用的基础。
811 0
指针和函数
指针和函数的关系   可以把一个指针声明成为一个指向函数的指针。intfun1(char*,int); int(*pfun1)(char*,int); pfun1=fun1; .... .... inta=(*pfun1)("abcdefg",7);//通过函数指针调用函数。
484 0
+关注
天飞
一个运维老同志
1510
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载