This commit is contained in:
2026-03-31 15:26:41 +02:00
parent 3a5efebd4b
commit 59d771de82
3 changed files with 55 additions and 12 deletions

View File

@@ -1,10 +1,15 @@
// Prześledź krok po kroku poniższy kod. Dla każdej linii zanotuj wartość ptr, *ptr
// (jeśli dostępna) oraz czy pamięć jest zaalokowana.
int *ptr = nullptr;
ptr = new int(5);
std::cout << *ptr << '\n';
*ptr = *ptr + 3;
std::cout << *ptr << '\n';
delete ptr;
ptr = nullptr;
#include <iostream>
int main() {
int *ptr = nullptr; // deklarujemy wskaźnik wskazujący na nic
ptr = new int(5); // wskaźnik wskazuje teraz na wartość 5. jest ona za
// lokowana na stercie
std::cout << *ptr << '\n'; // wyświetla 5
*ptr = *ptr + 3; // zwiększamy wartość o 3
std::cout << *ptr << '\n'; // wyświetla 8
delete ptr; // usuwa liczbę na którą wskazuje wskaźnik
ptr = nullptr; // wskaźnik teraz na nic nie wskazuje
}

View File

@@ -1,9 +1,21 @@
// Poniższy kod zawiera kilka błędów. Wskaż każdy z nich i zaproponuj poprawkę
void funkcja() {
int *a = new int(10);
int *b = new int(20);
a = b; // (1)
delete a; // (2)
delete b; // (3)
int *a = new int(
10); // do wskaźnika a przypisujemy wartość 10 zaalokowaną na stercie
int *b = new int(
20); // do wskaźnika b przypisujemy wartość 20 zaalokowaną na stercie
// a = b; // (1) // do wskaźnika a przypisujemy adres wskaźnika b
// teraz oba wskaźniki wskazują na 20.
// delete a; // (2) // usuwa wartość 20 ze sterty
// delete b; // (3) // usuwa wartość 20 ze sterty
// poprawa: zamiast przypisywać adresy przypiszmy wartości na które wskazują!
*a = *b;
delete a;
delete b;
// dodatkowo pokażmy że nie wskazują teraz na nic
a = nullptr;
b = nullptr;
}

View File

@@ -1,3 +1,29 @@
// Napisz program, który wczytuje od użytkownika liczbę n, alokuje tablicę n lic
// b całkowitych na stercie, wczytuje n wartości, oblicza i wypisuje ich
// sumę, a następnie poprawnie zwalnia pamięć.
#include <iostream>
int sumuj(int *arr, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += *(arr + i);
}
return sum;
}
int main() {
int n;
std::cout << "Podaj rozmiar tablicy: ";
int *arr = new int[n];
std::cin >> n;
for (int i = 0; i < n; i++) {
std::cout << "Podaj wartość numer: " << i + 1 << ": ";
std::cin >> *(arr + i);
}
std::cout << "Suma tych liczb to: " << sumuj(arr, n);
delete[] arr;
arr = nullptr;
return 0;
}