Hallihallo!
Ich bin ein absoluter Programmierneuling und versuche mich seit zwei Wochen an C++ über das Werk von Herrn Kalista, was bis jetzt für mich als Vollneuling das bisher mit Abstand beste Buch ist, das ich zu diesem Thema gefunden habe.
Nun bin ich in Kapitel 7.7.1 "New und Delete" angekommen. Während bisher alles recht gut geklappt hat, schaffe ich es momentan einfach nicht den "praktischen Bezug" zu diesem Statement von Herrn Kalista auf S. 204 herzustellen:
"Dieser eben[per new befehl auf dem Heap] reservierte Speicher ist nun, unabhängig von dem Gültigkeitsbereich, in dem
er reserviert wurde, überall gültig. Man braucht nur die Adresse zu übergeben, schon hat
man Zugriff darauf. Wenn diese Reservierung innerhalb einer Funktion stattfindet, so wird
der betreffende Speicher nicht automatisch nach Verlassen der Funktion gelöscht, so wie es
bei lokalen Variablen der Fall ist."
Ich interpretiere das so, dass ich diese auf dem Heap erzeugte Variable, im Gegensatz zu einer Stackvariable, außerhalb des Gültigkeitsbereiches verwenden kann, in dem sie erzeugt wurde.
Aber wie gelingt mir das in der Praxis?
#include<iostream>
using namespace std;
void test();
int main()
{
//Wie gelingt mir der Zugriff von *x in der main?
//Ohne return Befehl etc.
//x wird nicht erkannt. Wieso nicht wenn es doch auch außerhalb seines
//Gültigkeitsbereiches gültig sein soll?
*x = 100;
return 0;
}
void test()
{
int *x= new int;
}
Hoffe mir kann jemand helfen!