09. september 2004 - 14:59Der er
22 kommentarer og 1 løsning
array/pointers igen
Hejsa!
Så er jeg igen kørt fast i det med array/pointers. Vil lave en funktion som konvertere dec. til bin. Hvordan det gøres har jeg styr på men problemet lægger i hvordan jeg returnere mit resultat.
Det jeg har lavet ind til videre ser således ud men virker ikke helt.
char* decToBin(int n){ char bin[32]; //idet en int er på 32 bit. int i; for(i=0; n>0; i++){ bin[i] = n%2; n = n/2; } return bin; }
Hvis nogen kunne forklare mig hvordan man i al sin almindelighed retur arrays af forskellige fra funktioner.
En anden ting, et arrays størrelse SKAL defineres fra starten af lige meget om man initialsere dem som en adresse array[] eller som pointer, korrekt ??
"Du bør ikke returnere er automatisk array." Er ikke helt med, jeg skal da returnere et svar ?? og hvis jeg flytter arrayet ud hvor skal funktionen så gemme resultatet ?
Jeg er med på at variabler int, char arrays bliver gemt på stacken og så snart at funktionen hvori de er erkleret ender bliver deres plads frigivet. Men det gæler ikke pointers vel ?? og hvis jeg forstår det korrekt saa bliver f.eks. obejkter startet med new oxo gemt et andet sted. Hvor er det er de bliver gemt ?
int n=2000; char* bin; decToBin(n, bin); printf("The binary number %d equals %d in decimal\n", n, bin); return 0; }
Men char* bin; kan vel ikke bruges som input til funktionen idet at den ikke kan udvides dynamisk sp der skal jeg vel lave en char bin[32]; istedet, korrekt ??
damn det er godt nok wird, jeg har skrevet følende: void decToBin(int n, char* bin){ while(n>0){ *bin++ = n%2; n = n/2; } }
int main(int argc, char* argv[]){ int n=2000; char bin[32]; decToBin(n, bin); printf("The binary number %d equals %d in decimal\n", n, bin); return 0; }
og så giver den mig 245020 som svar, nogen ide til hvad der sker ?
void decToBin(int n, char* bin){ while(n>0){ *bin++ = n%2+'0'; n = n/2; } *bin = '\0'; // afslut streng }
int main(int argc, char* argv[]){ int n=2000; char bin[32+1]; decToBin(n, bin); printf("The binary number %d equals %s in decimal\n", n, bin); return 0; }
lige en sidste ting #2 :) printf("The binary number %s equals %d in decimal\n", bin, n);
Synes godt om
Ny brugerNybegynder
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.