mirror of
https://github.com/szymon-jozef/ZUT-notatki.git
synced 2026-10-27 19:20:39 +01: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
|
// 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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user