return w funkcjach niezwracających wartości

0

Mógłby ktoś wytłumaczyć mi o co chodzi z return w funkcji void?
Ten kod znalazłem na stronie http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Funkcje-a-slowo-kluczowe-return/339
Przecież typ void, to typ który nie zwraca wartości, a return jest stosowany do zwracania wartości. Więc chyba return nie pasuje do void. Nie rozumiem kompletnie o co z tym chodzi, a zauważyłem, iż jeżeli braknie return w funkcji void to program wyświetli dodatkowo liczbę 0. Dlaczego tak się dzieje? Gdy jest return to zero się nie wyświetla.

#include<iostream>
using namespace std;
void wyswietl( int tablica[], int ile )
{
    if( ile <= 0 )
    {
        std::cout << "Tablica jest pusta." << std::endl;
        return;
}
    int i = 0;
    do
    {
        std::cout << tablica[ i ] << ", ";
        i++;
    } while( i < ile );
    
    std::cout << std::endl;
}

int dopisz( int iLiczba, int tablica[], int ile )
{
    tablica[ ile ] = iLiczba;
    ile++;
    return ile; //zwraca ile jest elementów po dodaniu nowego
}

int main()
{
    int liczbaElementow = 0;
    int tablicaLiczb[ 10 ];
    wyswietl( tablicaLiczb, liczbaElementow );
    
    liczbaElementow = dopisz( 123, tablicaLiczb, liczbaElementow );
    wyswietl( tablicaLiczb, liczbaElementow );
    
    liczbaElementow = dopisz( 321, tablicaLiczb, liczbaElementow );
    wyswietl( tablicaLiczb, liczbaElementow );
    return 0;
}
0

Po prostu wychodzi z funkcji. Nic mniej i nic wiecej nie robi. Nawet masz przyklad, kiedy podany rozmiar tablicy jest ujemny, to trzeba sie "ewakuowac", jesli nie chce crasha. "return jest stosowany do zwracania wartości.", w sumie to nie jest. To tylko skutek uboczny, taki gratisik. http://translate.google.pl/#en/pl/return

0

W tym wypadku return powoduje po prostu natychmiastowe zakończenie wykonywania funkcji bez zwrócienia wartości. A to ze program wyświetla dodatkowe 0, to trzeba sobie krok po pkroku przeanalizować mając na uwadze ten fakt.

0

Dobra. Wielkie dzięki za odpowiedzi dotyczące słowa kluczowego return w void. Już łapie o co z tym return w void się rozchodzi. Do tej pory z kursów wychodziło, iż return zwraca zawsze jakąś wartość, więc coś mi tu nie grało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1