Files
courses/2023_Informatik_b/ueb7pointer.cpp
T
2025-07-30 15:57:48 +02:00

136 lines
3.4 KiB
C++

/* Informatik B - Sommersemester 2022
Übung 06
Katharina Klost
Aufgabe zu Pointern
g++ -std=c++14 -Wall -Wextra -Werror -pedantic ./w7/ueb7pointer.cpp -o ./bin/ueb7pointer && ./bin/ueb7pointer
*/
#include <iostream>
void ref(int &alpha)
{ // Call-by-Reference
std::cout << "&alpha: " << (&alpha) << std::endl;
std::cout << "alpha: " << (alpha) << std::endl;
alpha++;
}
void val(int alpha)
{ // Call-by-Value
std::cout << "&alpha: " << (&alpha) << std::endl;
std::cout << "alpha: " << (alpha) << std::endl;
alpha++;
}
void func1(int *alpha)
{
std::cout << "&alpha: " << (&alpha) << std::endl;
std::cout << "alpha: " << (alpha) << std::endl;
alpha++;
}
void func2(int *alpha)
{
std::cout << "&alpha: " << (&alpha) << std::endl;
std::cout << "alpha: " << (alpha) << std::endl;
(*alpha)++;
}
int main()
{
// Zeichnen Sie Speicherbilder, die veranschaulichen Sie was hier passiert.
// Erklären Sie die entsprechenden Ausgaben.
int a = 42;
int b = 6;
int *c = &a;
int *d = &b;
int &e = a;
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "d: " << d << std::endl;
std::cout << "e: " << e << std::endl;
std::cout << std::endl;
std::cout << "&a: " << (&a) << std::endl;
std::cout << "&b: " << (&b) << std::endl;
std::cout << "&c: " << (&c) << std::endl;
std::cout << "&d: " << (&d) << std::endl;
std::cout << "&e: " << (&e) << std::endl;
std::cout << std::endl;
// std::cout << (*a) << std::endl; Warum geht das nicht?
// std::cout << (*e) << std::endl; Warum geht das nicht?
std::cout << "*c: " << (*c) << std::endl;
std::cout << "*d: " << (*d) << std::endl;
std::cout << std::endl;
std::cout << "=== Skizzieren Sie den Aufbau des Speichers zu diesem Zeitpunkt ===" << std::endl;
std::cout << std::endl;
a = *c * *d;
std::cout << "a: " << a << std::endl;
*d -= 3;
std::cout << "*d: " << (*d) << std::endl;
b = a * b;
std::cout << "b: " << b << std::endl;
c = d;
std::cout << "*c: " << (*c) << std::endl;
std::cout << std::endl;
std::cout << "=== Skizzieren Sie den Aufbau des Speichers zu diesem Zeitpunkt ===" << std::endl;
std::cout << std::endl;
b = 7;
std::cout << "b: " << b << std::endl;
a = *c + *d;
std::cout << "a: " << a << std::endl;
std::cout << "&e: " << (&e) << std::endl;
std::cout << std::endl;
std::cout << std::endl;
c = &a;
std::cout << std::endl;
std::cout << "=== Skizzieren Sie den Aufbau des Speichers zu diesem Zeitpunkt ===" << std::endl;
std::cout << std::endl;
std::cout << std::endl;
std::cout << "== Erklären Sie die folgenden Ausgaben ==" << std::endl;
std::cout << std::endl;
std::cout << "a: " << a << std::endl;
std::cout << "&a: " << (&a) << std::endl;
std::cout << "Rufe ref(a) auf" << std::endl;
ref(a);
std::cout << std::endl;
std::cout << "a: " << a << std::endl;
std::cout << "&a: " << (&a) << std::endl;
std::cout << "Rufe val(a) auf" << std::endl;
val(a);
std::cout << std::endl;
std::cout << "a: " << a << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "&c: " << (&c) << std::endl;
std::cout << "Rufe func1(c) auf" << std::endl;
func1(c);
std::cout << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "&c: " << (&c) << std::endl;
std::cout << "Rufe func2(c) auf" << std::endl;
func2(c);
std::cout << "c: " << c << std::endl;
std::cout << "&c: " << (&c) << std::endl;
std::cout << "a: " << a << std::endl;
}