Konzept der "auto" - Schlüsselwort in c
Könnten Sie mir bitte das genaue Konzept des Schlüsselworts "auto" in einem C-Programm.
Wenn ich gegangen durch ein Buch "Deep C secrets" , habe die unten zitieren.
Dem auto-Schlüsselwort ist offenbar
unbrauchbar. Es ist nur sinnvoll, um eine
compiler-Schreiber machen einen Eintrag in ein
symbol Tabelle—es sagt, dieser Speicher ist
automatisch aufgeteilt auf die Eingabe
der block (im Gegensatz zu globalen statischen
Zuweisung oder dynamische Zuweisung auf
den heap). Auto ist irrelevant
andere Programmierer, da man es durch
default.
In C++0x auto hat eine ganz andere Bedeutung wenn. en.wikipedia.org/wiki/C%2B%2B0x#Type_inference
C++ ist nicht die gleiche Sprache als C. Das hat nichts mit der Frage zu tun.
Deshalb ist es ein Kommentar Cody, nicht eine Antwort.
Mögliche Duplikate von Wo ist der C-auto-Schlüsselwort verwendet?
C++ ist nicht die gleiche Sprache als C. Das hat nichts mit der Frage zu tun.
Deshalb ist es ein Kommentar Cody, nicht eine Antwort.
Mögliche Duplikate von Wo ist der C-auto-Schlüsselwort verwendet?
InformationsquelleAutor Renjith G | 2011-01-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
auto
ist kein Datentyp. Es ist ein storage-class-specifier, wiestatic
. Es ist im Grunde das Gegenteil vonstatic
wenn auf lokale Variablen und gibt an, dass die variable, die Lebenszeit ist gleich seinem Umfang (zum Beispiel: wenn Sie den Bereich verlässt, wird es automatisch zerstört).Müssen Sie nie angeben
auto
als nur Orte, die Sie erlaubt sind zu verwenden, es ist auch die Standardeinstellung.int foo() {int *p; {int i = 42; p = &i} return *p;}
non-conforming?Die C90 spec, in §6.1.2.4, sagt dies über die automatische Speicherung Dauer: "Lagerung garantiert wird, vorbehalten, eine neue Instanz eines solchen Objekts auf jedem normalen Eintrag in den block, mit dem es verbunden ist ... Speicher für das Objekt ist nicht mehr garantiert werden vorbehalten, sobald die Ausführung des Blocks endet, in keiner Weise." Ich habe nicht eine Kopie des C99-spec, aber es scheint unwahrscheinlich, dass Sie dies ändern.
InformationsquelleAutor Laurence Gonsalves
Könnte es sinnvoll sein in C89, wo Sie eine implizite int-Regel.
Aber dann können Sie nur schreiben, gerade
int
stattauto
. C99 nicht eine implizite int-Regel nicht mehr. Also ich glaube nicht, dassauto
einen praktischen Zweck mehr. Es ist "nur den Standard" Lagerung Planer.auto
können verwendet werden, es ist auch der Standard, stillschweigendint
geben oder nicht.InformationsquelleAutor Johannes Schaub - litb
Erhalten Sie die
auto
Verhalten standardmäßig, wenn Sie eine variable deklarieren, zum Beispiel -int i = 0;
Allerdings tun Sie das gleiche, indem Sie explizit angebenauto int i = 0
die nicht gebraucht werden.InformationsquelleAutor cpx
Wie gesagt
auto
ist der Standardwert für Variablen in der Funktion Umfang in C. Die einzige Verwendung, die ich hatte, für die keyword-Makros. Für ein makro, das eine Deklaration von Variablen, die Sie vielleicht manchmal wollen sicherstellen, dass die variable nicht deklariert iststatic
oder in der Datei scope. Hier dieauto
keyword kommt praktisch.Dies war besonders nützlich für C++, wo man missbrauchen könnte der Konstruktor/Destruktor-Mechanismus zu tun, scope gebunden resource management. Da die
auto
Schlagwort ist derzeit in seiner Bedeutung verändern, um etwas ganz anderes in C++, diese Verwendung ist nicht mehr möglich.InformationsquelleAutor Jens Gustedt
Finde ich das Zitat Recht fragwürdig. Die logische Ebene, der compiler hat nichts zu tun mit der logischen Ebene der kompilierte Sprache, auch wenn die beiden Sprachen sind die gleichen. Kann sein das ich arm bin auf fantasy, aber ich kann wirklich nicht vorstellen, wie man nicht ein bestimmtes keyword werden kann, nützlich für einen compiler, aber nicht für ein Allgemeines Programm; besonders in "C", wo man nicht direkt Bearbeiten, Schlüsselwörter oder jegliche form von code sowieso, und Sie haben zu reflektieren alles, was an Daten da, in "C" code und Daten sind zwei völlig unterschiedliche Konzepte.
Meine wilde Vermutung ist, dass auto war es ursprünglich, weil es nicht optional, sondern verpflichtend, später, wenn die Sprache sich weiterentwickelt und es war nicht mehr notwendig blieb es noch, weil aus Gründen der Abwärtskompatibilität mit vorhandenen C-code.
InformationsquelleAutor 6502
Angenommen ich habe eine Funktion die Rückgabe eine Art von gewundenen Zeiger auf eine komplexe Struktur, oder, wie ich entwickle eine Funktion, die könnte es wieder andere Strukturen, ich möchte in C zu haben:
auto myautoptr=This_Function_that_returns_some_pointer_type();
InformationsquelleAutor Leslie Satenstein