void swap(void *vp1,void *vp2,int size){
char buffer[size];
memcpy(buffer,vp1,size);
memcpy(vp1,vp2,size);
memcpy(vp2,buffer,size);
}
void * lSearch(void *key,void *base,int n,int elementSize){
for(int i = 0; i < n; ++i){
char * elementAddr = (char *)base + i * elementSize;
if(memcmp(key,elementAddr,elementSize) == 0){
return elementAddr;
}
}
return NULL;
}
int main(){
int numbers[] = {20,35,75,12,13,16,22};
int key = 0;
cout << "Enter a number:";
cin >> key;
int * pkey = (int*)lSearch(&key,numbers,sizeof(numbers)/(sizeof(numbers[0])),sizeof(numbers[0]));
if(pkey){
cout << "Found: " << *pkey << endl;
}else{
cout << "Not Found" << endl;
}
return 0;
}
第一个函数可以对不同类型的变量进行交换,通过内存的复制来实现
第二个函数可以在不同类型的数组中搜索指定的一个元素
(斯坦福编程范式公开课)