Alternative gesucht, Fehler bekannt (glaub ich)

EueRolando

Cadet 2nd Year
Registriert
Aug. 2014
Beiträge
29
Hallo,

ich bin Anfänger und denke ich kenne meinen Fehler. Folgende Funktion:

c++:
Code:
void Funktion (sEinStruct *array){
std::cin>>a;
ausgabe(array[a]);
}

In der letzten Zeile kommt ein Fehler.
Ich nehme mal an deshalb: Ich übergebe nur einen Zeiger (dieser zeigt auf das erste Element eines Arrays vom typ sEinStruct). Nun will ich die Adresse eines Elements in dem Array an eine andere Funktion übergeben und nutze dazu die []-Operatoren. Der Compiler weiß aber nicht dass der Zeiger zu einem Array gehört und kann mit diesen Klammern nichts anfangen. Habe ich das schonmal richtig erfasst?
Meine Lösung: Mit sizeof die Adresse "manuell" ausrechen und dann übergeben? Gibt es dazu eine bessere Lösung?

Grüße
EueRolando
 
Zuletzt bearbeitet: (siehe crys und the_nobs)
ähhhh

ist das wirklich dein code? Vermute mal das sollte C++ sein!
Der kann ja so nicht funktionieren

int a;
std::cin >> a; // du willst von cin einlesen und nicht rausschreiben

das ist aber alles sehr gefährlich, du überprüfst nirgends ob du im gültigen speicherbereich bist.
also ob du nicht array[789456] ausgeben willst, was ziemlich sicher im Nirvana ist.
 
Also sorry, ja ist c++.
Meine Funktion sieht doch etwas umfangreicher aus. Deklariert und initialisiert wird a auch.
 
Dann bitte ein Beispiel das vollständig ist, wo man etwas damit anfangen kann.
Mir ist erstmal nur die Klammer aufgefallen, aber wenn es da eh noch weiter geht ...
 
wenn du wirklich die adresse übergeben willst, versuch mal

ausgabe(&array[a])

oder

ausgabe(array+a);
 
Danke striker159!

Ich muss nochmal nachfragen, weil ich es wirklich verstehen will.
Deine Antwort sagt mir, wenn ich array schreibe wird immer und in jeder Situation das i-te Element "adressiert" und dereferenziert?
Also ich bin wirklich verwirrt dies: *array ist equivalent zu: array[]? Aber sobald ich in die Klammern was reinschreibe wird eine dereferenzierung vorgenommen?

Grüße
EueRoland
 
Zuletzt bearbeitet:
In C++ haben Arrays überhaupt nichts zu suchen! Gerade als Anfänger ist es total unnötig sich mit den Problemen Rumzuschlagen, die Arrays verursachen.
Lies sonst einmal hier meinen Beitrag durch.
Einen std::vector gibst du ganz einfach ohne Pointer an eine Funktion und die Funktion ausagbe hat dann zB diese Signatur:
Code:
void ausgabe(std::vector<int> const& zahlen);
 
Naja, schade dass ich für meine Belegarbeit mit Arrays arbeiten soll. Ich verstehe auch nicht weshalb solche Aufgaben gestellt werden? Ich habe auch schon viel von vector gelesen aber wie gesagt: es kommt nicht in Frage
 
Na dann evtl noch generell ein Tipp:
Solche Fragen lassen sich wunderbar auf der Seite stackoverflow beantworten.
Wenn man dort das hier sucht:
[c++] pass array to function
kommt zB dieser Beitrag: http://stackoverflow.com/questions/14309136/passing-arrays-to-function-in-c
Der große Vorteil dieser Seite ist, dass die "beste" Lösung auch die erste ist die man liest. (Beiträge/Antworten sind nicht wie im Forum chronologisch sondern nach Qualität sortiert). Dh es gibt in C/C++ oft viele Lösungen die man alle lauffähig bekommt, aber häufig wird eine Vorgehensweise von den Experten dort als "die beste" angesehen und diese findet man gerade für Anfängerprobleme auf dieser Seite. Die besonders guten Antworten erklären häufig auch, wieso gerade diese Lösung die bevorzugte ist.
Wenn man es ganz besonders bequem will: Die stackoverflow-Suche lässt sich zB in Firefox oben rechts als Suchmaschine anlegen. Dh man drückt in Firefox nur STRG+K und STRG+PfeilRunter und kann direkt auf stackoverflow suchen ohne groß rumgoogle zu müssen.
 
Zuletzt bearbeitet:
Zurück
Oben