としての機能を与えられたすべてのデータタイプを受け入れるようにvoid* function_ptr(void *ptr, int size);
汎用関数が
void *ptr
がvoidポインタで
とsize
として(それは内部malloc()
使用できる)数であり、リターンでは、メモリは、に応じて割り当てる必要データ型int
の場合は4*size(considering 32 bit)
、char
の場合は1*size
に割り当てる必要があります。 例えば、整数データ型の
、function_ptr((void *)some_int_ptr, 10)
が10 *4(32 bit)
= 40 bytes
と
function_ptr((void *)some_char_ptr, 10)
を割り当てる必要があり、10バイトが割り当てられるべき
質問がどのようにint
/char
/double
ポインタにvoid *
を型キャストすることができるされています関数はどのデータ型がvoid*
に型キャストされているか分からないため?
void* function_ptr(void *ptr, int size, int data_type);
'#define allocate(pret、len)malloc((len)* sizeof *(pret))'? 'void *'にキャストすると、sizeof(* ptr)== _Alignof(* ptr)とみなされます。 – a3f
インタビューの質問は何ですか? –
@ n.m。 :空のポインタとサイズをとり、サイズとデータ型に応じてメモリを割り当てます。intと10の場合は40バイト、charと10の場合は10バイトを割り当てます。 – ashish