webForumDet fria alternativet

Skicka char till void** funktion

C/C++

2 svar · 460 visningar · startad av Viktor

Medlem sedan aug. 20021 752 inlägg
Frågan#1

Hej!

Jag har en funktion som serut såhär,

ssize_t fs_load(const char * src, void ** out_ptr)

det är inga problem att anroppa denna med en variabel av datatypen void,

void *data=NULL;
size=fs_load("/rd/font/font_size.txt",&data);

men hur ska jag skriva om jag vill att datatypen på data ska vara char?? Jag vill altså deklarera data som char och sedan när jag skickar med det till funktionen så ska det typomvandlas till void.

/Viktor

Medlem sedan aug. 20021 752 inlägg
#2

Hittade en lösning själv

char *data2=NULL;
size=fs_load("/rd/font/font_size.txt",(void**)&data2);

/Viktor

Medlem sedan juni 200010 432 inlägg
#3

Voidpekare är ju generella pekare, vilket innebär att man själv ansvarar för att det blir rätt, vad det gäller typomvandling m.m.. . Tänk på att pekararitmetik blir olika beroende på om det är en char eller en int (en eller 4 bytes). Så det beror egentligen på hur funktionen är uppbyggd internt om det kommer att fungera eller ej, trots din omtypning. En char ++ stegar 1 byte, medans en int ++ stegar fyra bytes, för att få adressen till nästa char eller int.

252 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)