Dies ist eine Frage aus der neuesten Version von Stroustrups "C++ Programmiersprache".TCPL 5.9.9 (C++): Wo wäre es sinnvoll, einen Namen in seinem eigenen Initialisierer zu verwenden?
Ich habe dies in den letzten paar Tagen in meinem Kopf überlegt.
Das einzige, was ich mit oben kommen kann, (und dies ist wahrscheinlich falsch) ist so etwas wie dieses:
int* f(int n) {
int* a = &a - n * sizeof(int*);
return a;
}
Meine Absicht ist es, die Adresse von etwas weiter oben auf dem Stapel zu erhalten. Macht das irgendeinen Sinn? Hat noch jemand andere Antworten? Denken Sie daran, dies ist in Kapitel 5 (Zeiger, Arrays und Strukturen), also sollte die Antwort nicht etwas später im Buch beinhalten.
Was bringt Sie dazu zu denken, dass es überhaupt Sinn machen sollte? : p – jalf
Nun, als tragbarer Code, ist Ihr U. B. Ich denke, es bedeutet, dass es keinen Sinn macht :) –
Um genauer zu sein: "Stack" ist ein Implementierungsdetail; Im C++ - Standard gibt es so etwas nicht. Es hat nur "automatischen Speicher", ohne anzugeben, wie es implementiert ist. Darüber hinaus ist die Zeigerarithmetik, die zu einem Zeiger auf das erste Element eines Arrays führt (einzelne Variable kann zu diesem Zweck als 1-Element-Array behandelt werden), dekrementiert, U. B. –