`void *` к другому указателю - PullRequest
       6

`void *` к другому указателю

3 голосов
/ 25 февраля 2012

Если я передам void *vptr функции, которая принимает other_type *ptr в качестве аргумента, vptr будет автоматически преобразован в other_type *?Вот код,

typedef struct A {
    //...
}A;

void bar(A *a)
{
    //do something with a
}

int main()
{
    A a = {..};
    void *vp = &a;
    bar(vp);  //will vp be converted to A*?
}

Мой код безопасен или правильный?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

Да, void* неявно преобразуется в любой тип указателя, а любой тип указателя неявно преобразуется в void*.Вот почему вам не нужно (и не следует) приводить, например, возвращаемое значение malloc.

3 голосов
/ 25 февраля 2012

Ваш код будет работать. Вы можете передать пустоту * чему-то ожидающему структуру A *. В этом отношении C набирается слабо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...