Avatar billede petermjensen Nybegynder
13. marts 2007 - 18:45 Der er 8 kommentarer og
1 løsning

void pointer som array

Hej Eksperter,

Jeg sidder og har nogle problemer med at bruge en void pointer i en function som et array.
Jeg prøver følgene:

char c[2];
c[0] = 'a';
c[1] = 'b';

og så har jeg følgene funktion:
void test(void *t)
{
    printf("test:%c", &t[0];
}

Men jeg få ikke det rigtige resultat.
Mit spørgsmål:
Hvordan kan bruge arrayet i funktionen test? Eller er det ikke muligt at bruge en void pointer?
Avatar billede arne_v Ekspert
13. marts 2007 - 19:03 #1
char c[2];
c[0] = 'a';
c[1] = 'b';
...
test(c);
...
void test(void *t)
{
    printf("test:%c", t[0]);
}

burde virke omend:

void test(void *t)
{
    printf("test:%c", (char)t[0]);
}

vel var paenere
Avatar billede petermjensen Nybegynder
13. marts 2007 - 19:17 #2
Hej arne_v, :o)

Min compiler brokker sig over printf linjen: (prøvet både med den pænere og den grimmere :o) )
først en warning:
Warning: dereferencing 'void *' pointer

og så fejl på samme linje:
Error: void value not ignored as it should be

Jeg bruger gcc på linux.
Avatar billede bertelbrander Novice
13. marts 2007 - 19:50 #3
void test(void *t)
{
  printf("test:%c", ((char *)t)[0]);
}
Avatar billede petermjensen Nybegynder
13. marts 2007 - 20:04 #4
Det virkede.
Tusind tak for hjælpen!

jeg må vist lege lidt med pointer syntaxen :o)

Kan jeg få jer begge til at lægge svar?
Avatar billede bertelbrander Novice
13. marts 2007 - 20:26 #5
Jeg samler ikke på point.
Avatar billede petermjensen Nybegynder
13. marts 2007 - 22:08 #6
Ok. Men tak for hjælpen!

Jeg lukker spørgsmålet når arne_v har svaret.
Avatar billede arne_v Ekspert
14. marts 2007 - 00:35 #7
jeg skal ikke have point for forkert svar
Avatar billede yates Nybegynder
14. marts 2007 - 10:14 #8
Hvad med printf("test:%c", *(char*) t);

Y.
Avatar billede petermjensen Nybegynder
14. marts 2007 - 19:37 #9
arne_v: ok. Jeg svarer selv og accepterer.
yates: Har fået det til at virke :o)
Jeg skulle have fat i char'en i et indeks i arrayet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester