why (void **) type can be assigned to (void *) or (int *)?

Viewed 1228

this is my C code:

int main()
{
    void * ptr_void;
    void ** ptr_2void;
    ptr_void = ptr_2void;
    return 0;
}

i am just wondering why this code is valid? i have assigned an (void *) to (void **), the compiler pass it even without a warning. the type looks mismatch. and the following code that assigning an (void **) to (int *) also works.

int main()
{
    int * ptr_int;
    void ** ptr_2void;
    ptr_int = ptr_2void;
    return 0;
}

anyone is able to figure out what is exactly of (void *) stuff?

3 Answers
Related