Kjeksen Skrevet 15. april 2005 Del Skrevet 15. april 2005 Jeg holder på og lære meg det basiske om arrays og holder på og lage et lite testeprogram. Det jeg skal er å bruke en funksjon til å få tak i data, og en til og vise. Jeg har komt fram til dette #include <iostream> using namespace std; int getdata(int tall[2]); void display(int res[2]); int main() { int tall[2]; int res[2]; res[2] = getdata(tall); display(res); system("pause"); return 0; } int getdata(int tt[2]) { for(int d = 0; d < 2; d++) { cout << "Tall: "; cin >> tt[d]; } return tt[2]; } void display(int rr[2]) { for(int i = 0; i < 2; i++) { cout << rr[i]; } } men tingen er at det jeg får tilbake er masse tall, ikke de tallene som jeg skrev inn. og ja, programmerer på windows. Lenke til kommentar
Herr_Dude Skrevet 15. april 2005 Del Skrevet 15. april 2005 (endret) Er fordi du passerer en tabell som du fyller med verdier, og en annen som du viser. Hvis du kaller display og getData funksjonen med samme tabell blir det bra. Edit: la ikke først merke til at du retunerer tabellen. Ikke gjør det, bare passer den og ha void på funksjonen. Tabeller er pass by reference, så verdiene vil endre seg uansett. Endret 15. april 2005 av Herr_Dude Lenke til kommentar
prebenl Skrevet 15. april 2005 Del Skrevet 15. april 2005 slik kan du gjøre det, ved å bruke tabellen som ut-argument for funksjonen. Du sender tabellen med adresseoverføring i begge funksjoner, men merker i skrivut-funksjonen tabellen som konstant, for å markere at ingen endring skal kunne finne sted. slik blir funksjonene mer generelle, i stedet for å kreve akkurat 2 elementer #include <iostream> using namespace std; void getdata(int *tall, int antallTall); void display(const int *tall, int antallTall); int main() { int tall[2]; getdata(tall, 2); display(tall, 2); system("pause"); return 0; } void getdata(int *tall, int antallTall) { for (int d = 0; d < antallTall; d++) { cout << "Tall: "; cin >> tall[d]; } } void display(const int *tall, int antallTall) { for(int i = 0; i < antallTall; i++) { cout << tall[i] << endl; } } Lenke til kommentar
JBlack Skrevet 20. april 2005 Del Skrevet 20. april 2005 res[2] = getdata(tall); Whoha! Siden getdata(...) returnerer en integer, så prøver programmet ditt å stappe inn en integer på tredje plassen i arrayen res. Ikke bare er det konseptuelt feil, men siden res kun har to plasser, så er det å be om at programmet kræsjer (eller gjør noe uforutsigbart). Lenke til kommentar
☀ ❄ Skrevet 20. april 2005 Del Skrevet 20. april 2005 [...] the results are undefined, and we all know what "undefined" means: it means it works during development, it works during testing, and it blows up in your most important customers' faces. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå