• Source
    1. #include <iostream>
    2.  
    3. bool my_mem_compare(void *key, void *element, int element_size) {
    4. bool match = true;
    5. char *key_copy = (char*)key;
    6. char *element_copy = (char*)element;
    7.  
    8. for (int i=0; i<element_size; i++) {
    9. if (*key_copy++!=*element_copy++)
    10. return false;
    11. }
    12. return true;
    13. }
    14.  
    15. void* my_find(void *key, void *array, int element_size, int n)
    16. {
    17. for (int i = 0; i < n; i++)
    18. {
    19. if (my_mem_compare(key, (char*)array+i*element_size, element_size))
    20. return (char*)array+i*element_size;
    21. }
    22. return 0;
    23. }
    24.  
    25. char TAB[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
    26. int TAB2[] = {2, 3, 7, 12, 16, 21, 44};
    27. int main()
    28. {
    29. char x = 'D';
    30. void* result = my_find(&x, TAB, sizeof(char), sizeof(TAB)/sizeof(char));
    31. if (result) std::cout << *((char*)(result)) << std::endl;
    32. int i = 7;
    33. result = my_find(&i , TAB2, sizeof(int), sizeof(TAB2)/sizeof(int));
    34. if (result) std::cout << *((int*)(result)) << std::endl;
    35. return 0;
    36. }
    37.