33

私はCに慣れ始め、それから型キャストに出くわしました。*.hファイルで次のように定義されている場合

struct data {
    int value;
    char *label;
};

そしてこれは別の*.hファイルにあります

# define TYPE      void*

関数に渡される変数「TYPEval」を使用できるように、voidポインターを構造体にキャストするにはどうすればよいですか?たとえば、TYPE valが指す値を利用したい場合、その値を別の関数に渡すことができるように、どのようにキャストしますか?

4

2 に答える 2

35
(struct data*)pointer

voidへのポインタを。へのポインタにキャストしますstruct data

于 2013-02-18T22:21:41.260 に答える
2

構造体へのvoidポインターの型キャストは、次の方法で実行できます。

void *vptr;
typedef struct data
{
   /* members */
} tdata;

このために、構造体に型キャストすることができます。たとえば、このvptrを構造体変数として関数に送信したいとします。

それから

void function (tdata *);
main ()
{
    /* here is your function which needs structure pointer 
       type casting void pointer to struct */
    
    function((tdata *) vptr);
}

注:voidポインターの主な目的は、任意の型にvoidポインターを型キャストできます。

于 2015-08-20T09:44:25.537 に答える