09. april 2005 - 16:19
Der er
10 kommentarer og 1 løsning
pointer til array
Hej Hvad er problemet her..? void normalizeArray(int *array[]) { int a = 46, b = 109, c = 51; array[0] = &a; array[1] = &b; array[2] = &c; } main() { int *array2 [3]; normalizeArray(array2); cout << *array2[0] << endl; cout << *array2[1] << endl; cout << *array2[2] << endl; } Udskrift: 46 -858993460 -858993460 Hvorfor indeholder variabel [1] og [2] ikke de tal der er sat ? v/ Frodi
Annonceindlæg fra SoftwareOne
09. april 2005 - 16:26
#1
Du returnerer adresser på lokale variable. void normalizeArray(int array[]) { int a = 46, b = 109, c = 51; array[0] = a; array[1] = b; array[2] = c; }
09. april 2005 - 16:28
#2
#include <iostream> using namespace std; void normalizeArray(int array[]) { int a = 46, b = 109, c = 51; array[0] = a; array[1] = b; array[2] = c; } int main() { int array2[3]; normalizeArray(array2); cout << array2[0] << endl; cout << array2[1] << endl; cout << array2[2] << endl; return 0; } udskriver det som du forventer
09. april 2005 - 16:32
#3
Ok.. Har stadigvæk et problem.. jeg kan ikke bruge din kode direkte, vel ? hvad anet skal ændres, så... og hvorfor virker min kode for den første variabel ? de returnerer korrekt for array2[0] = 46 v/ Frodi p.s Metoden skal kunne modtage et int array, manipulere det, og siden læse fra det igen
09. april 2005 - 16:37
#4
ok..det forstår jeg slet ikke :) men det virker :) så, tusind tak.. nu er det jo netop en lokal variabel man gemmer tallene i.. array2 skulle efter min opfattelse stadigvæk være tomt.. V/ Frodi
09. april 2005 - 16:40
#5
int a = 46, b = 109, c = 51; // a peger på et stykke memory med 46 array[0] = &a; // array[0] peger på det stykke memory } // det stykke memory bliver markeret som ledig til genbrug cout << *array2[0] << endl; // udskriver hvad der nu tilfældigvis er i det stykke memory
09. april 2005 - 16:41
#6
mit eksempel flyttede værdierne over
09. april 2005 - 16:41
#7
og et svar
09. april 2005 - 16:49
#8
Ok, tak for hjælp, hvad mener du med "og et svar" :) har du fået dine points? /Frodi
09. april 2005 - 16:50
#9
jep
09. april 2005 - 17:00
#10
Lige en ting til..... Det jeg ikke forstår...Kunne det også laves med pointere ? hvor man bruger * eller & i metode hovedet ? bare nysgerrig... noget i stil med: void normalizeArray(int *array[]) { } eller void normalizeArray(int &array[]) { } og så et kald til metoden a la normalizeArray(*mitArray); eller normalizeArray(&mitArray); v/ Frodi
09. april 2005 - 17:04
#11
Man bruger * og & til pointer of adresse. void f(int *v) // skal kaldes med pointer til int { *v = 123; // vi ændrer det som pointeren peger på } int v; f(&v); // vi kalder med adressen på v
Kurser inden for grundlæggende programmering