首页 技术 正文
技术 2022年11月9日
0 收藏 579 点赞 4,487 浏览 3805 个字

一个很容易糊涂的问题.

在函数的返回值中, void 是没有任何返回值, 而 void * 是返回任意类型的值的指针.

还是看代码吧:

#include <stdlib.h>
#include <stdio.h>void voidc(int a);
void* voidcp(int *a);
int main(){
int a=10;
int *ap; voidc(a);
ap = (int*)voidcp(&a);
printf("%d\n",*ap); return 0;
}
void voidc(int a){
printf("%d\n",a);
return; // 没有返回值
}
void* voidcp(int *a){
printf("%d\n", *a);
return a; // 返回 int *
}

二分查找的利用代码:

bsearch

Performs a binary search of a sorted array.

void *bsearch( const void *key, const void *base, size_t num, size_t width, int ( __cdecl *compare ) ( const void *elem1, const void *elem2 ) );

Routine Required Header Compatibility 

bsearch <stdlib.h> and <search.h> ANSI, Win 95, Win NT  

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 

LIBCMT.LIB Multithread static library, retail version 

MSVCRT.LIB Import library for MSVCRT.DLL, retail version 

Return Value

bsearch returns a pointer to an occurrence of key in the array pointed to by base. If key is not found, the function returns NULL. If the array is not in ascending sort order or contains duplicate records with identical keys, the result is unpredictable.

Parameters

key

Object to search for

base

Pointer to base of search data

num

Number of elements

width

Width of elements

compare

Function that compares two elements: elem1 and elem2

elem1

Pointer to the key for the search

elem2

Pointer to the array element to be compared with the key

Remarks

The bsearch function performs a binary search of a sorted array of num elements, each of width bytes in size. The base value is a pointer to the base of the array to be searched, and key is the value being sought. The compare parameter is a pointer to a user-supplied routine that compares two array elements and returns a value specifying their relationship. bsearch calls the compare routine one or more times during the search, passing pointers to two array elements on each call. The compare routine compares the elements, then returns one of the following values:

Value Returned by compare Routine Description 

< 0 elem1 less than elem2 

0 elem1 equal to elem2 

> 0 elem1 greater than elem2 

Example

/* BSEARCH.C: This program reads the command-line

 * parameters, sorting them with qsort, and then

 * uses bsearch to find the word "cat."

 */

#include <search.h>

#include <string.h>

#include <stdio.h>

int compare( char **arg1, char **arg2 ); /* Declare a function for compare */

void main( int argc, char **argv )

{

   char **result;

   char *key = "cat";

   int i;

   /* Sort using Quicksort algorithm: */

   qsort( (void *)argv, (size_t)argc, sizeof( char * ), (int (*)(const 

   void*, const void*))compare );

   for( i = 0; i < argc; ++i )    /* Output sorted list */

      printf( "%s ", argv[i] );

   /* Find the word "cat" using a binary search algorithm: */

   result = (char **)bsearch( (char *) &key, (char *)argv, argc,

                              sizeof( char * ), (int (*)(const void*, const void*))compare );

   if( result )

      printf( "\n%s found at %Fp\n", *result, result );

   else

      printf( "\nCat not found!\n" );

}

int compare( char **arg1, char **arg2 )

{

   /* Compare all of both strings: */

   return _strcmpi( *arg1, *arg2 );

}

Output

[C:\work]bsearch dog pig horse cat human rat cow goat

bsearch cat cow dog goat horse human pig rat

cat found at 002D0008

Searching and Sorting Routines

See Also   _lfind, _lsearch, qsort

纯真数据库的处理代码:

char c_text[1024], l_text[1024]; //返回用

void *result[] = {c_text, l_text};//返回用

void* __cdecl _GetAddress(const char *IPstr)

{

if( !loaded || !ptr )

return noload_result;

unsigned int ip = str2ip(IPstr);

get_ipwry(ip);

return result;

}

#include <iostream>
#include "ipsearcher.h"
using namespace std;
#pragma comment(lib, "ipsearcher.lib")int main(void)
{
typedef void *RESULT[2];//返回用
cout <<IPCount() << endl;
cout << DateTime() << endl;
char **pstr = (char**)_GetAddress("192.168.1.1");
cout << pstr[0] << pstr[1] << endl;
return 0;
}

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295