Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

15.01.2012, 13:17

Array im Funktionsparameter

HI alle zusammen

hab mal grad ne Frage, Situation:

Ich möchste einen Integer array einer Funktion übergeben.
Das macht man ja zb. so:

C-/C++-Quelltext

1
2
3
4
5
6
void Compute (int i[]);
int main ()
{
       int a[] = {3,5,7,5};
       Compute (a);
}


So wenn ich jetzt aber auch noch die Funktion ausschreibe und dann darin im debuggen teste, überträgt er immer nur das erste Element
und schneidet sozusagen die anderen alle raus!
Wieso?

ProAmateur
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

2

15.01.2012, 13:47

Ja der Debugger zeigt nur das erste Element im Array, da er nicht weiß wie groß das Array ist. Du musst der Funktion nämlich noch eine Meta-Information über die Größe des Arrays geben (siehe Parameter argc in einer typischen Main-Funktion), damit du das Array auch korrekt behandeln kannst.

3

15.01.2012, 13:47

Weil er nicht das Array kopiert sondern nur den Zeiger auf die Anfangsadresse.

Der Debugger erkennt vermutlich vom Typ her nur noch den Zeiger und zeigt das Element an, auf das der Zeiger zeigt. Das ist eben das erste Element des Arrays. Mit i[1], kannst du aber immer noch auf das zweite Element innerhalb des Arrays zugreifen.

Du wirst vermutlich auch die Größe des Arrays übergeben wollen um auf alle Elemente zugreifen zu wollen. Les dir mal den Thread hier durch:

Wieso funktionerit "sizeof(array)" nicht, wenn man einen array an eine Funktion übergibt?
Lieber dumm fragen, als dumm bleiben!

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

4

15.01.2012, 14:03

OK hab vertsanden wieso es nit funktioniert, aber weiß irgendwie immer noch nit,
wie es aussehen sollte, dass es funktioniert!

Könntet ihr mal Code posten?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

5

15.01.2012, 14:15

Hast du scheinbar nicht, denn es funktioniert.
Les dir nochmal durch was Jonathan_Klein geschrieben hat.

6

15.01.2012, 14:27

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void Compute (int *a, int Size)
{
 for(int i=0; i<Size; ++i)
   cout << a[i] << endl;
}


int main ()
{
       int a[] = {3,5,7,5};
       Compute (a, sizeof(a)/sizeof(a[0]));
}


Aber sobald du die C++ Grundlagen beherrschst, solltest du von Arrays auf Vektoren umsteigen. Wie gesagt, lies einfach den Thread.
Lieber dumm fragen, als dumm bleiben!

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

7

15.01.2012, 17:32

Ah ok danke geht jetzt geklappt...
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

8

20.01.2012, 17:14

HI ich hätte da noch ne Frage:
Wie sieht das denn aus, wenn ich ein vector als Zeiger einer funktion übergebe?
Geht das und wenn wie kann ich diesen dann in der Funktion ansprechen?
Da steht dann immer : Die variable muss einen Klassentyp aufweisen!
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

9

24.01.2012, 10:59

Ja du kannst auch einen Vector als Parameter übergeben. Kleines Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
vector<int> int_vect;
function_name(int_vect);
...
void function_name(vector<int>& int_v);
{
...
}

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

10

24.01.2012, 17:10

Jo mir is klaar, dass das funktioniert, aber wie kann ich danach auf ihn zugreifen?
Außerdem würde ich gern ein Zeiger und keine Referenz verwenden.

hast du dafür auch ein Beispiel?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Werbeanzeige