Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo jetzt will ichs genau wissen,

wenn ich eine globale Variable in einem Headerfile definiere, dann habe ich ja mehrere Möglichkeiten.

  1. extern int i;
  2. static int i = 1;
  3. int i;

Wo ist jetzt der Unterschied?

Manchmal muss ich im cpp file nochmal int i = ??; schreiben manchmal nicht.

Wird die Variable dann auf dem Heap oder Stack angelegt ?

Mit extern sagst du dem Compiler, dass die Variable in irgendeiner Übersetzungseinheit (.c/.cpp-Datei) definiert wird. Darum muss auch in genau einer .cpp-Datei dieselbe Variable ohne extern stehen.

Mit static hast du getrennte Variablen für jede Übersetzungseinheit, also mehrere i, die nichts miteinander zu tun haben.

Wenn du weder extern noch static benutzt, hast du ein globales i definiert. Wenn diese Definition aber dann in mehr als einer Übersetzungseinheit auftaucht, wird sich der Linker über mehrfach definierte Symbole beschweren.

Die Variable wird weder auf dem Stack noch auf dem Heap/Free Store angelegt, sondern im Speicherbereich für statische und globale Variablen.

Hallo jetzt will ichs genau wissen,

wenn ich eine globale Variable in einem Headerfile definiere, dann habe ich ja mehrere Möglichkeiten.

...

Wird die Variable dann auf dem Heap oder Stack angelegt ?

1. Headerfiles werden vom Compiler (genauer von seinem Preprozessor) vor dem eigentlichen Übersetzen mit dem C-Modul in dem sie inkludiert sind zusammengeführt. Das heisst, es ist nicht relevant, ob eine Anweisung in einem Headerfile oder im Hauptmodul selbst steht.

2. Die Speichertypen/Orte an denen Variablen abgelegt werden, sind "implementation-defined", also vom Compiler bzw. der Zielarchitekur abhängig. Generell werden Stack-Variablen aber nur fuer automatische/lokale Variablen verwendet. Variablen aus einem "Heap" sind wohl eher dynamischer Natur. Da aber globale und statische Variablen immer existieren weisst man Ihnen normalerweise ein festes Plaetzchen im Datenspeicher zu.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.