Wie der Zugriff auf eine lokale variable aus einer anderen Funktion mit Zeigern?

Kann ich keinerlei Zugriff auf eine lokale variable in einer anderen Funktion? Wenn ja, wie?

void replaceNumberAndPrint(int array[3]) {
    printf("%i\n", array[1]);
    printf("%i\n", array[1]);
}

int * getArray() {
    int myArray[3] = {4, 65, 23};
    return myArray;
}

int main() {
    replaceNumberAndPrint(getArray());
}

Die Ausgabe von dem code oben:

65
4202656

Was mache ich falsch? Was bedeutet das "4202656" bedeuten?

Muss ich kopieren, das ganze array in die replaceNumberAndPrint() - Funktion, um in der Lage sein, darauf zuzugreifen mehr als beim ersten mal?

Schwer zu wissen, den besten Vorschlag für Ihre Absicht, hier. Aber möchten Sie vielleicht zu Lesen, auf shared-Pointer (shared_ptr und Freunde). Sie bieten einige der schönen Eigenschaften der Müll gesammelt Sprachen-by-doing-Referenz zählen. Aber anders, also Vorsicht.
Ich Stimme zu, diese wieder zu öffnen, und verwenden Sie es als eine kanonische doppelte für Fragen von der Art "ich bin immer ein crash wenn wieder ein Zeiger auf lokale variable,, warum?", anstatt anderen klassischen kanonischen duplizieren, die eher für den "ich bin nicht immer ein Absturz, warum nicht?"
ein bisschen problematisch ist, dass dies sowohl in C und C++.
Es gibt nichts einzigartiges zu C++ in Frage, aber leider gibt es in C++ Antworten, damit der tag hat zu bleiben.

InformationsquelleAutor Radek Simko | 2010-12-31

Schreibe einen Kommentar