Przejdź do treści głównej
INF.04Pytanie #648 z 856jezyk-cpp-skladnia-i-pamiec

Jaki będzie wynik działania poniższego kodu w języku C++?

Opcje odpowiedzi:
A
Kod spowoduje błąd kompilacji
B
Zostaną wypisane adresy pamięci kolejnych elementów tablicy
C
10 20 30 40 50
Prawidłowa
D
10 20 30 40
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: C

C. 10 20 30 40 50 – Kod poprawnie iteruje przez tablicę za pomocą wskaźnika. Przeanalizujmy pętlę for:

  • int *ptr = arr;: Inicjalizacja. Wskaźnik ptr zostaje ustawiony tak, aby wskazywał na pierwszy element tablicy arr.
  • ptr < arr + size;: Warunek kontynuacji. arr + size to adres w pamięci tuż za ostatnim elementem tablicy. Pętla będzie wykonywana tak długo, jak wskaźnik ptr wskazuje na elementy należące do tablicy.
  • ptr++: Inkrementacja. Przesuwa wskaźnik na następny element tablicy (o sizeof(int) bajtów).
  • std::cout << *ptr << " ";: Ciało pętli. Operator * (dereferencji) pobiera wartość, na którą aktualnie wskazuje ptr, i ją wypisuje.

Dlaczego inne odpowiedzi są nieprawidłowe:

  • A. Kod spowoduje błąd kompilacji – Kod jest w pełni poprawny składniowo.

  • B. Zostaną wypisane adresy pamięci... – Aby wypisać adresy, należałoby użyć std::cout << ptr; (bez operatora dereferencji *).

  • D. 10 20 30 40 – Taki wynik zostałby uzyskany, gdyby warunkiem było ptr < arr + size - 1, co spowodowałoby pominięcie ostatniej iteracji.

Chcesz poćwiczyć całą kwalifikację INF.04?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF04
Reklama

Podobne pytania z działu „Jezyk cpp skladnia i pamiec”

Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 25 pytań z tego działu.