statisch - wird nur für die Begrenzung der Umfang?

Ist die static - Schlüsselwort in C nur verwendet für die Beschränkung der Gültigkeitsbereich einer Variablen auf eine einzelne Datei?

Muss ich wissen, wenn ich verstanden, dass dieses Recht. Bitte nehmen Sie die folgenden 3 Dateien,

Datei1.c

int a;

Datei2.c

int b;

datei3.c

static int c;

Nun, wenn die 3 Dateien zusammengefasst werden, dann wird der Variablen "a" & "b" haben sollte, eine Globale Reichweite und können aufgerufen werden, die von einer der 3 Dateien. Aber die variable "c" statisch, kann nur zugegriffen werden, aus datei3.c, richtig?

Tut static haben eine andere Anwendung in C ? (andere als Einschränkung des Geltungsbereichs einer Variablen wie oben gezeigt?)

  • die variable a & b nicht-Sichtbarkeit in anderen C-Dateien, wenn Sie "extern" werden.
  • nicht ganz wahr, du wirst laufen in der Verknüpfung Probleme, wenn Sie definieren "int a;" in zwei Dateien.
  • oh, und für den Datensatz. Es ist nicht eingeschränkt auf die Datei, es bezieht sich auf die compilation unit. Es ist durchaus möglich, eine ".c" - Datei in einem anderen ".c" - Datei, oder für diese Angelegenheit, deklarieren Sie eine "int a;" in einem .h-Datei. Es ist kein guter Stil, aber durchaus möglich.
  • dann von einem scope-Perspektive, die Variablen a,b & c sind nur sichtbar in den jeweiligen Dateien, unabhängig von der "static" - Schlüsselwort? So, die "statisch" in dem oben tut sich nichts ?
  • Sie scheinen zu leiden, eine terminologische Verwechslung. Leider, die meisten Leute hier tun. Bitte beenden Sie das mischen der Thermen "Sichtbarkeit", "scope" und "Verknüpfung". IDS sind immer sichtbar in nur einer übersetzungseinheit: ab dem Punkt der Deklaration und dem Ende der Einheit. Der Bereich, wo die Bezeichner sichtbar ist, wird als "scope". I. e., "scope" und "Sichtbarkeit" ist die gleiche Sache, und es ist immer lokal auf eine einzelne übersetzungseinheit. Nun, "Verknüpfung" ist ein globaler Begriff. Bindung ist die Fähigkeit, link auf das gleiche Objekt aus einer anderen übersetzungseinheit.
  • Objekte mit externer Bindung verknüpft werden können, um aus einer anderen translation unit (indem Sie es). Objekte mit internen Bindung kann nicht verknüpft werden, um aus einer anderen übersetzungseinheit. Das ist es, was static - regler- Gestänge. static keinen Einfluss auf den Umfang (und Sichtbarkeit).

InformationsquelleAutor chronodekar | 2009-11-25
Schreibe einen Kommentar