diff --git a/TE2/.cproject b/TE2/.cproject index fcc459a..eb59dfe 100644 --- a/TE2/.cproject +++ b/TE2/.cproject @@ -115,4 +115,5 @@ + \ No newline at end of file diff --git a/TE2/.settings/language.settings.xml b/TE2/.settings/language.settings.xml index 1b23e35..859cc07 100644 --- a/TE2/.settings/language.settings.xml +++ b/TE2/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/Aliasing/.cproject b/TE2/Aliasing/.cproject new file mode 100644 index 0000000..f6a9776 --- /dev/null +++ b/TE2/Aliasing/.cproject @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/Aliasing/.gitignore b/TE2/Aliasing/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/TE2/Aliasing/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/TE2/Aliasing/.project b/TE2/Aliasing/.project new file mode 100644 index 0000000..f030b07 --- /dev/null +++ b/TE2/Aliasing/.project @@ -0,0 +1,27 @@ + + + Aliasing + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/TE2/Aliasing/.settings/language.settings.xml b/TE2/Aliasing/.settings/language.settings.xml new file mode 100644 index 0000000..28429f6 --- /dev/null +++ b/TE2/Aliasing/.settings/language.settings.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/Aliasing/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/TE2/Aliasing/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000..10601c7 --- /dev/null +++ b/TE2/Aliasing/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/CPLUS_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/CPLUS_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/appendContributed=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/LIBRARY_PATH/delimiter=; +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/append=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1641314707/appendContributed=true diff --git a/TE2/Aliasing/.settings/org.eclipse.core.resources.prefs b/TE2/Aliasing/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/TE2/Aliasing/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/TE2/Aliasing/Aliasing.cpp b/TE2/Aliasing/Aliasing.cpp new file mode 100644 index 0000000..f52145f --- /dev/null +++ b/TE2/Aliasing/Aliasing.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; + +/* + * Was ist Aliasing? + * + * Aliasing tritt auf, wenn zwei oder mehr Referenzen, Zeiger oder Variablen + * auf denselben Speicherort verweisen. Das bedeutet, dass eine Änderung des + * Werts über eine Referenz auch den ursprünglichen Speicherort beeinflusst, + * auf den andere Referenzen zeigen. In diesem Beispiel wird Aliasing durch + * Referenzen demonstriert. + */ +int main(){ + + + + /* + * Aliasing (mit Referenzen): + */ + int x = 10; + int &alias = x; // alias zeigt auf die x adresse + + cout << "x: " << x << endl; + alias = 20; // Ändere den Wert von der x Adresse über die Referenz + + cout << "x nach der Änderung: " << x << endl; // x adresse wurde geändert, weil alias auf x zeigt + + /* + * Aliasing (mit Zeigern): + */ + + int x2 = 15; + int *ptr = &x2; // ptr zeigt auf x + + cout << "x2: " << x2 < + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/CallByReferencevsCall ByValue/.gitignore b/TE2/CallByReferencevsCall ByValue/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/TE2/CallByReferencevsCall ByValue/.project b/TE2/CallByReferencevsCall ByValue/.project new file mode 100644 index 0000000..96f666f --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/.project @@ -0,0 +1,27 @@ + + + CallByReferencevsCall ByValue + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/TE2/CallByReferencevsCall ByValue/.settings/language.settings.xml b/TE2/CallByReferencevsCall ByValue/.settings/language.settings.xml new file mode 100644 index 0000000..2da216d --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/.settings/language.settings.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000..e3f35ad --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/CPLUS_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/CPLUS_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/appendContributed=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/LIBRARY_PATH/delimiter=; +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/append=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.171962615/appendContributed=true diff --git a/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.core.resources.prefs b/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/TE2/CallByReferencevsCall ByValue/CallByReferencevsCall ByValue.cpp b/TE2/CallByReferencevsCall ByValue/CallByReferencevsCall ByValue.cpp new file mode 100644 index 0000000..26378cf --- /dev/null +++ b/TE2/CallByReferencevsCall ByValue/CallByReferencevsCall ByValue.cpp @@ -0,0 +1,59 @@ +#include +using namespace std; + +/* (Call By Reference vs Call By Value)? + * - Call By Value: + * * wird der Wert eines Arguments in die Funktion kopiert. (siehe Beispiel) + * Das bedeutet, dass Änderungen, die innerhalb der Funktion an dem Parameter vorgenommen werden, keine Auswirkungen auf das Original haben. + * + * - Call By Reference: + * * wird durch die Verwendung von Referenzen (&) oder Zeigern (*) möglich. + * Änderungen am Parameter wirken sich direkt auf die ursprüngliche Variable aus. + * + * * Wichtige Unterschiede: + * 1. Referenzen (int&): + * - Funktioniert als ein Alias für die ursprüngliche Variable. Die + * Funktion erhält direkten Zugriff auf die Variable, ohne dass + * die Adresse explizit übergeben werden muss. + * Kein &-Symbol beim Funktionsaufruf notwendig. + * + * 2. Zeiger (int*): + * - Ein Zeiger speichert die Adresse der Variablen. Damit die + * Funktion weiß, wo die Variable im Speicher steht, muss die Adresse übergeben werden. + * & ist beim Funktionsaufruf notwendig, da du die Adresse übergeben musst. + */ + +int CallByValue(int x) { + return x++; // Call by Value: Der Wert wird inkrementiert, aber es hat keine Auswirkung auf das Original +} + +int CallByReference(int &x2) { + return x2++; // Call by Reference: Inkrementiert den Wert direkt, der Referenzierte Wert ändert sich +} + +int CallByZeigern(int *x3) { + return (*x3)++; // Call by Pointer: Dereferenziert den Zeiger und inkrementiert den Wert, auf den der Zeiger zeigt +} + +int main(){ + // Call By Value Beispiel: + int x = 4; + CallByValue(x); + cout << "X1 (Call by Value): " << x << endl; // Ausgabe = 4, da der Wert nur in der Funktion geändert wird, nicht im Original. + + // Call By Reference: + int x2 = 4; + CallByReference(x2); + cout << "X2 (Call by Reference): " << x2 << endl; // Ausgabe = 5, der Wert wurde direkt geändert. + + // Call By Zeiger: + int x3 = 4; + CallByZeigern(&x3); // Übergebe die Adresse von x3 + cout << "X3 (Call by Pointer): " << x3 << endl; // Ausgabe = 5, der Wert wurde durch den Zeiger geändert. + + return 0; +} + + + + diff --git a/TE2/Casting/.settings/language.settings.xml b/TE2/Casting/.settings/language.settings.xml index 0973514..2506803 100644 --- a/TE2/Casting/.settings/language.settings.xml +++ b/TE2/Casting/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/ConstantVariable/.cproject b/TE2/ConstantVariable/.cproject new file mode 100644 index 0000000..1dd56c1 --- /dev/null +++ b/TE2/ConstantVariable/.cproject @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/ConstantVariable/.gitignore b/TE2/ConstantVariable/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/TE2/ConstantVariable/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/TE2/ConstantVariable/.project b/TE2/ConstantVariable/.project new file mode 100644 index 0000000..334442f --- /dev/null +++ b/TE2/ConstantVariable/.project @@ -0,0 +1,27 @@ + + + ConstantVariable + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/TE2/ConstantVariable/.settings/language.settings.xml b/TE2/ConstantVariable/.settings/language.settings.xml new file mode 100644 index 0000000..869d502 --- /dev/null +++ b/TE2/ConstantVariable/.settings/language.settings.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TE2/ConstantVariable/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/TE2/ConstantVariable/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000..78501b2 --- /dev/null +++ b/TE2/ConstantVariable/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/CPLUS_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/CPLUS_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/appendContributed=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/LIBRARY_PATH/delimiter=; +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/append=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.438536103/appendContributed=true diff --git a/TE2/ConstantVariable/.settings/org.eclipse.core.resources.prefs b/TE2/ConstantVariable/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/TE2/ConstantVariable/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/TE2/ConstantVariable/ConstantVariable.cpp b/TE2/ConstantVariable/ConstantVariable.cpp new file mode 100644 index 0000000..cd953cb --- /dev/null +++ b/TE2/ConstantVariable/ConstantVariable.cpp @@ -0,0 +1,25 @@ +#include +using namespace std; +/* + * Was ist eine konstante Variable? + * - Eine konstante Variable ist eine Variable, deren Wert nach der Initialisierung nicht geändert werden kann. + * - konstante Referenzen und konstante Zeiger sind auch möglich + */ + +void print(const int &x2) { // x ist eine konstante Referenz + // x = 20; // Fehler: Du kannst den Wert von x nicht ändern + cout << "Wert von x2: " << x2 < - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/Eingabe/.settings/language.settings.xml b/TE2/Eingabe/.settings/language.settings.xml index 094fd8c..e54318f 100644 --- a/TE2/Eingabe/.settings/language.settings.xml +++ b/TE2/Eingabe/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/EscapeSequence/.settings/language.settings.xml b/TE2/EscapeSequence/.settings/language.settings.xml index 8855d74..2173239 100644 --- a/TE2/EscapeSequence/.settings/language.settings.xml +++ b/TE2/EscapeSequence/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/LocalvsGlobal/.settings/language.settings.xml b/TE2/LocalvsGlobal/.settings/language.settings.xml index 0d620cc..c394df3 100644 --- a/TE2/LocalvsGlobal/.settings/language.settings.xml +++ b/TE2/LocalvsGlobal/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/Methoden/.settings/language.settings.xml b/TE2/Methoden/.settings/language.settings.xml index 4952e8a..f1bc4dc 100644 --- a/TE2/Methoden/.settings/language.settings.xml +++ b/TE2/Methoden/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/Methoden/Methoden.cpp b/TE2/Methoden/Methoden.cpp index 5e35873..16fb377 100644 --- a/TE2/Methoden/Methoden.cpp +++ b/TE2/Methoden/Methoden.cpp @@ -7,11 +7,20 @@ int add(int a, int b) { return a + b; } -// Methode mit Standardparameter +/*Methode mit Standardparameter: + * - Sobald du einem Parameter einen Standardwert zuweist, + * müssen alle nachfolgenden Parameter ebenfalls Standardwerte haben. + * + * also z.B + * int add2(int a = 10, int b) { Fehler! b muss auch einen Standardwert haben + */ + int add2(int a, int b = 10) { // b hat einen Standardwert von 10 return a + b; } + + //Variadische Funktionen int sum(int count, ...) { va_list args; @@ -24,9 +33,31 @@ int sum(int count, ...) { return result; } +/* + * Inline-Methoden: + * - Der Compiler versucht, den Code der Methode direkt am Funktionsaufruf einzufügen, + * anstatt zur Speicheradresse der Funktion zu springen. + * + */ +inline double add(double a, double b) { + return a + b; +} + int main() { - cout << add2(3) << endl; + // Der Compiler kann hier entscheiden, ob die Funktion `add` inline ersetzt wird. + int a = 5; + int b = 5; - return 0; + // Es wird versucht, den Code `return a + b;` direkt hier einzufügen (kein Sprung). + std::cout << "Die Summe ist: " << add(a, b) << std::endl; + + // Hier ist die Funktion `add` tatsächlich inline (keine Sprünge). + double a2 = 5.2; + double b2 = 5.2; + + // Es wird erwartet, dass der Code für `add(a2, b2)` direkt hier eingefügt wird. + std::cout << "Die Summe ist: " << add(a2, b2) << std::endl; + + return 0; } diff --git a/TE2/Random/.cproject b/TE2/Random/.cproject index effd77e..fd081c7 100644 --- a/TE2/Random/.cproject +++ b/TE2/Random/.cproject @@ -87,6 +87,7 @@ + @@ -108,4 +109,5 @@ + \ No newline at end of file diff --git a/TE2/Random/.settings/language.settings.xml b/TE2/Random/.settings/language.settings.xml index b125e12..b29ed89 100644 --- a/TE2/Random/.settings/language.settings.xml +++ b/TE2/Random/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TE2/Verzweigungen/.settings/language.settings.xml b/TE2/Verzweigungen/.settings/language.settings.xml index aa6fbe5..a25d1fd 100644 --- a/TE2/Verzweigungen/.settings/language.settings.xml +++ b/TE2/Verzweigungen/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - +