查找函数和跳转函数

1.

查找函数bsearch()

查找字符在已排列好的字符中的位置,返回第一个匹配的指针,否则NULL

#include<stdio.h>
#include<stdlib.h>

void *bsearch(const void *key,const void *buf,size_t num,size_t size,int (*compare)(const void *,const void *));

key是指向关键字的指针,buf是已排列好的字符串(从低到高)num是数组元素数目,size是每个元素占的字节数,compare函数必须是比较参数的函数,返回是arg1<arg2,arg1=arg2,arg1>arg2

这是折半查找必须的参数,参数分别是关键字指针和指向数组元素的指针。

2.

#include<setjmp.h>

int setjmp(jmp_buf envbuf);

void longjmp(jmp_buf envbuf,int status);

envbuf是保存当前执行的系统堆栈信息,为longjmp提供跳转的位置,longjmp不返回,但是status作为setjmp的返回值,envbuf是从setjmp得到的。

示例:

 1 #include<setjmp.h>
 2 #include<stdio.h>
 3
 4 jmp_buf envbuf;
 5 void foo(void);
 6
 7 int main(void)
 8 {
 9     int i;
10
11     printf("1\n");
12     i=setjmp(envbuf);
13     if(i==0)
14     {
15         foo();
16         printf("this will not be printed\n");
17     }
18     printf("%d\n",i);
19     return 0;
20 }
21
22 void foo(void)
23 {
24     printf("3\n");
25     longjmp(envbuf,5);
26 }

结果是

1

3

5

时间: 2024-08-24 20:00:00

查找函数和跳转函数的相关文章

Linux环境编程之进程(三):函数间跳转

引言:在编写程序时,经常在函数内部使用goto语句来跳转,从而进行出错处理,那么如果想要在函数之间进行跳转该怎么做呢?使用setjmp和longjmp函数. 给出示例程序: #include <stdio.h> #include <stdlib.h> #include <setjmp.h> static void f1(int, int, int, int); static void f2(void); static jmp_buf jmpbuffer; static

[欢课] EXCEL怎样运用VLOOKUP函数,与INDEX-MATCH函数进行查找?

假设现在,已知成绩数据表和需要匹配数据表,现在需要根据姓名在成绩数据表中匹配姓名对应的成绩,需要用vlookup函数匹配. 一.VLOOKUP犯错!根据函数语法 VLOOKUP(查找值,数据表,列序数,[匹配条件]),直接写函数 =VLOOKUP(H3,A:E,4,0) 返回#N/A,#N/A 是 Not Applicable(查找值不适用,即没有找到查找值)的意思.所以要学好vlookup,需要了解这个函数的来源. 二.VLOOKUP函数的来源 vlookup函数是[查找][引用函数],而vl

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

Lua函数执行流程及函数延续点问题的研究

第一:Lua函数调用的总体流程 在保护性调用的情况下,lua中函数调用的流程如下,非保护性调用的流程更加简单,请追踪lua_call函数 int docall (lua_State *L, int narg, int nres) | —— int lua_pcallk (lua_State *L, int nargs, int nresults, int errfunc ...) | —— luaD_pcall (lua_State *L, Pfunc func, void *u,ptrdiff

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search

MySQL字符串函数、日期时间函数

MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符

python协程函数、递归、匿名函数与内置函数使用、模块与包

目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就

BCB/Delphi中常用的VCL函数说明(文件函数)

--------------------文件操作--------------------函数名称:ChangeFileExt函数说明:更改指定文件的扩展名,函数原型如下:AnsiString __fastcall ChangeFileExt(const AnsiString FileName,const AnsiString Extension); 函数名称:DeleteFile函数说明:在计算机磁盘中删除指定的文件,如果操作成功,则函数返回真,函数原型如下:bool __fastcall De

python基础-匿名函数、内置函数、正则表达式、模块

1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): return x + y + z print(func(1,5,2)) 1.2 匿名函数 匿名函数:没有名字的函数,定义的时候不需要函数名:定义匿名函数的关键字是:lambda 特点: 1.没有函数名 2.函数自带return 应用场景: 1.应用于一次性的地方 2.临时使用 salaries={