What is the use of unsigned char pointers? I have seen it at many places that pointer is type cast to pointer to unsigned char. Why do we do so?

We receive a pointer to int and then type cast it to unsigned char*. But if we try to print element in that array using cout it does not print anything. Why? I do not understand. I am new to C++.

EDIT Sample Code Below

int Stash::add(void* element)
{
    if(next >= quantity)
    // Enough space left?
        inflate(increment);
    
    // Copy element into storage, starting at next empty space:
    int startBytes = next * size; 
    unsigned char* e = (unsigned char*)element;
    for(int i = 0; i < size; i++)
        storage[startBytes + i] = e[i];
    next++;
    return(next - 1); // Index number
}
Edit
Report