mikrocontroller.net

Forum: PC-Programmierung Int*& sinnvoll?


Autor: Flutsch1987 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
inline Int class::methode_xy(Int*& vector, Double dist, Int size) {
  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
inline Int class::methode_xy(Int* vector, Double dist, Int size) {
  return bla(vector, dist, size);
nicht so ziemlich den gleichen Effekt erzielen?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Flutsch1987 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bla befindet sich in nem anonymen namespace und die deklaration sieht 
wie folgt aus
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..

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Flutsch1987 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.