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 // 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. // (jeśli dostępna) oraz czy pamięć jest zaalokowana.
int *ptr = nullptr; #include <iostream>
ptr = new int(5);
std::cout << *ptr << '\n'; int main() {
*ptr = *ptr + 3; int *ptr = nullptr; // deklarujemy wskaźnik wskazujący na nic
std::cout << *ptr << '\n'; ptr = new int(5); // wskaźnik wskazuje teraz na wartość 5. jest ona za
delete ptr; // lokowana na stercie
ptr = nullptr; 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ę // Poniższy kod zawiera kilka błędów. Wskaż każdy z nich i zaproponuj poprawkę
void funkcja() { void funkcja() {
int *a = new int(10); int *a = new int(
int *b = new int(20); 10); // do wskaźnika a przypisujemy wartość 10 zaalokowaną na stercie
a = b; // (1) int *b = new int(
delete a; // (2) 20); // do wskaźnika b przypisujemy wartość 20 zaalokowaną na stercie
delete b; // (3) // 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 // 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 // b całkowitych na stercie, wczytuje n wartości, oblicza i wypisuje ich
// sumę, a następnie poprawnie zwalnia pamięć. // 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;
}