Forum: PC-Programmierung Int*& sinnvoll?


von Flutsch1987 (Gast)


Lesenswert?

moin,
ich habe folgendes Problem:
ich versuche gerade den Sinn einer Methode in einem bereits bestehendem 
Projekt zu verstehen.
sie sieht wie folgt aus
1
inline Int class::methode_xy(Int*& vector, Double dist, Int size) {
2
  return bla(vector, dist, size);

sie macht also auf den ersten Blick nichts weiter als die argumente 
entgegenzunehmen und mit den gleichen argumenten eine andere Funktion 
aufzurufen...was mich allerdings verwirrt ist das Int*& vector...das 
argument was der methode übergeben wird ist ein ganz normales array, 
weshalb ich den Sinn des & nicht verstehe...also das es ne referenz auf 
nen pointer ist, der wiederrum auf ne int variable zeigt, ist mir schon 
klar, aber welche sinn hat solch ein konstrukt?
würde
1
inline Int class::methode_xy(Int* vector, Double dist, Int size) {
2
  return bla(vector, dist, size);
nicht so ziemlich den gleichen Effekt erzielen?

von Peter (Gast)


Lesenswert?

es kann ja sein das der Zeiger geändert wird, dann musst du es als 
zeiger auf zeiger oder halt referenz auf zeiger übergeben.

von Klaus W. (mfgkw)


Lesenswert?

Es macht dann Sinn, wenn bei bla der Parameter bei vector
(was für ein blöder Name, wenn es schon vector in der
STL gibt) ebenfalls wieder als Referenz deklariert ist#
und bla möglicherweise den Wert des Zeigers ändert (zu
NULL setzt, durch realloc/mallof/new korrigiert etc.).

Falls bla den Wert nie ändert, ist es erstens sinnlos
und zweitens eher schädlich für die Verständlichkeit durch
Programmierer und Compiler, hier eine Referenz zu nehmen.

von Flutsch1987 (Gast)


Lesenswert?

bla befindet sich in nem anonymen namespace und die deklaration sieht 
wie folgt aus
1
Int bla(Int* vector, double dist, int size)
und innerhalb von bla wird das vectorarray nur benutzt um ein paar werte 
aus diesem einzulesen, verändert wird da gar nichts..

von Klaus W. (mfgkw)


Lesenswert?

Dann ist bei methode_xy die Referenz auch sinnlos.
Wenn schon, dann wäre eine const-Referenz angebracht,
oder wie du schon selbst meintest die Ref. einfach
weglassen.

Eine Ausnahme wäre natürlich, wenn die Methode eine
bestimmte Deklaration braucht, weil sie zusammen
mit anderen ähnlichen über Zeiger gleichen Typs
verwendet werden soll, aber sowas ist eher
unwahrscheinlich.

PS: ich gehe davon aus, daß mit Int int gemeint ist?
Falls Int etwas ganz anderes ist, nehme ich alles zurück.

(Korrekte Beispiele wären förderlicher als irgendwas
hingerotztes...)

von Mark .. (mork)


Lesenswert?

Dann wird hier wohl versucht, die direkte Übergabe eines Int-Arrays zu 
verhindern und das Benutzen eines echten Zeigers zu erzwingen, da von 
Array-Adressen keine Referenz gebildet werden kann. Was das für einen 
Sinn hat, wird nur der Programmierer der Methode selbst wissen...

MfG Mark

von Flutsch1987 (Gast)


Lesenswert?

ups, ja mit Int ist int gemeint...im gesamten projekt ist per typedef 
dafür gesorgt das Int oder Double o.ä. das gleiche wie int bzw double 
ist...k.A. warum, aber daher der schreibfehler ;)
dann bin ich ja erstmal in meiner Vermutung bestätigt...
wie immer danke für die fixe hilfe :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.