mirror of
https://github.com/szymon-jozef/ZUT-notatki.git
synced 2026-09-07 12:10:40 +02:00
kod
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user