c语言范式编程之lsearch

#include<stdio.h>

int cmpfn(void *elem1, void *elem2)
{
    int *ip1 = elem1;
    int *ip2 = elem2;

    return *ip1 - *ip2;
}


void *lsearch(void *key, void *base ,int n, int elemSize,
		 int (*cmpfn)(void *,void *))
{
    int i=0;
	for( i=0; i<n; i++)
	{
		void *elemAddr = (char *)base + i*elemSize;
		if(cmpfn(key,elemAddr) == 0)
			return elemAddr;
	}

	return NULL;
}

int main()
{
    int array[] = {1,3,5,7,9,11,13,15,17,19};
    int key1 = 13;
    int key2 = 33;
    int *find1 = NULL;
    int *find2 = NULL;

    find1 = lsearch(&key1,array,sizeof(array)/sizeof(int),
			sizeof(int),cmpfn);
    find2 = lsearch(&key2,array,sizeof(array)/sizeof(int),
			sizeof(int),cmpfn);

    printf("address of array is:%p\n",array);
    printf("address of find1 is:%p\n",find1);
    printf("address of find2 is:%p\n",find2);

	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值