Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Różnica w formułowaniu funkcji ze znacznikiem i bez - szybkość działania,pamięć?

Ostatnio zmodyfikowano 2014-06-23 15:26
Autor Wiadomość
irek45
Temat założony przez niniejszego użytkownika
[C++] Różnica w formułowaniu funkcji ze znacznikiem i bez - szybkość działania,pamięć?
» 2014-06-23 13:41:39
Przerabiam kurs i mam pytanie  z serii: dlaczego tak, a nie tak.
W tłumaczeniu przydatności znaczników w funkcjach przytoczony został przykład 1. Przykład 2 robi to samo. Czym się to będzie różnić pod względem zużycia pamięci, szybkości działania, użyteczności? Jako początkujący chciałbym to wiedzieć na tym etapie, tzn w tym, krótkim programie to nie ma chyba znaczenia, ale przy konstrukcji większych programów akurat taki zapis ma jakiś cel.



Przykład 1

C/C++
#include <iostream>
#include <conio.h>
using namespace std;

void operacja( float liczba1, float liczba2, int par, float * wynik )
{
    cout << "adres : " << wynik << endl;
    if( par == 1 ) // w zależności od parametru, ustalamy wynik
    {
        ( * wynik ) = liczba1 + liczba2;
    }
    if( par == 2 )
    {
        ( * wynik ) = liczba1 - liczba2;
    }
    if( par == 3 )
    {
        ( * wynik ) = liczba1 * liczba2;
    }
    if( par == 4 )
    {
        ( * wynik ) = liczba1 / liczba2;
    }
}
int main() // funkcja główna
{
    float wynik;
    operacja( 4, 5, 4, & wynik ); // wywołanie funkcji: liczby to 4 i 5, parametr wynosi 4
    cout << wynik;
    getch();
    return 0;
}

Przykład 2

C/C++
#include <iostream>
#include <conio.h>
using namespace std;

float operacja( float liczba1, float liczba2, int par )
{
    float wynik;
    if( par == 1 ) // w zależności od parametru, ustalamy wynik
    {
        wynik = liczba1 + liczba2;
    }
   
    if( par == 2 )
    {
        wynik = liczba1 - liczba2;
    }
   
    if( par == 3 )
    {
        wynik = liczba1 * liczba2;
    }
   
    if( par == 4 )
    {
        wynik = liczba1 / liczba2;
    }
    return( wynik );
}

int main() // funkcja główna
{
   
   
    cout << operacja( 4, 5, 4 ); // wywołanie funkcji: liczby to 4 i 5, parametr wynosi 4
   
   
    getch();
    return 0;
}
P-112566
pekfos
» 2014-06-23 14:16:06
Funkcja ze sposobu nr 1 jest trudniejsza w użyciu i podatna na błędy (np jak podasz zły wskaźnik). Sam zresztą widzisz, sposób 1 wymaga 3 linii kodu do użycia funkcji, a sposób 2 jednej.

w tym, krótkim programie to nie ma chyba znaczenia
Ma znaczenie. Utrudniasz sobie życie lub nie. Jest sens używania tu wskaźników, gdy wynik nie może być zwrócony, ani skopiowany.
P-112567
DejaVu
» 2014-06-23 15:26:45
A ja dodam jeszcze: opanuj najpierw dobrze język programowania, a potem zajmuj się ewentualną analizą wydajności.
P-112580
« 1 »
  Strona 1 z 1