Int*& sinnvoll?

Gast #1946395
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?
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.
Gast
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..
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...)
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
Gast
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 :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.