12. september 2002 - 22:04Der er
11 kommentarer og 2 løsninger
Arrays i funktioner ?
Hvis jeg nu har en funktion:
void funktion(int array[]) { }
og en
void main(void) { int array[1000]; funktion(array); }
Så kommer array'et med de 1000 plads aldrig over i funktionen, hvis jeg f.eks. tager sizeof(array)/4 i main så giver den 1000 (underligt nok, jeg ville da mene man burde dividere med 2 kun, idet en int er 16 bit = 2 byte, men pyt), mens den giver 0 i funktionen.
Så hvordan får jeg smidt det array over i funktionen ?
Og endnu bedre, hvordan får jeg funktionen til at enten redigere array'et direkte (prøvede at skrive & array[]) men det godtog den ikke, eller til at returnere det nye array.
Jeg er ved at lave en sorterings funktion (good old bubble sort)
Hmm... Hvorfor virker det med --> int *array <-- ikke?
Jeg har lige lavet den her lille stump kode, og den funger fint. OK der står måske en del i koden, men det er blot for at fylde arrayet op med tal, og skrive dem ud :) Måden at kalde "funktion" er identisk med din egen
#include <iostream>
using namespace std;
void funktion(int *array){ for(int i = 0; i < 100; i++) cout << array[i] << endl; }
Faktisk er det sådan at når du opretter et array, f.eks.: int array[100]; Så er indeholder 'array'-variablen, adressen på det første element i arrayet, ud fra hvilken man kan finde frem til alle de andre elementer.
Når du så sender arrayet til en funktion, f.eks.: void FillArrayWithZero(int array[], size){ for(int i = 0; i < size; i++) array[i] = 0; } ved at skrive: FillArrayWithZero(array, 100); er det reelt set adressen til arrayet du sender, og derfor arbejder du direkte på arrayets indhold, og IKKE en kopi.
Prøv den her stump kode, så kan du se hvad jeg mener
#include <iostream>
using namespace std;
void FillArrayWithZero(int array[], int size){ for(int i = 0; i < size; i++) array[i] = 0; }
void ShowArray(int array[], int size){ for(int i = 0; i < size; i++) cout << array[i] << endl; }
Ahh det kan jeg jo godt se, min funktion fungerer også nu, så takker :)
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.