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

Nadpisywanie tablicy a nadpisywanie jednej zmiennej

Ostatnio zmodyfikowano 2015-03-24 18:10
Autor Wiadomość
Kontekst
Temat założony przez niniejszego użytkownika
Nadpisywanie tablicy a nadpisywanie jednej zmiennej
» 2015-03-24 17:49:02
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void funkc1( int g )
{
    g =( rand() % 24 ) + 5;
    cout << "Wylosowana zmienna to: " << g << endl;
}
void funkc2( int c[] )
{
    int i = 0;
    do
    {
        c[ i ] =( rand() % 70 ) + 50;
        cout << "Wylosowane liczba w tablicy nr " << i << " to " << c[ i ] << endl;
        i++;
    } while( i < 3 );
   
}
int main()
{
    srand( time( NULL ) );
    int a = 2;
    funkc1( a );
    cout << "Zmienna a po wszystkich operacjach to : " << a << endl; //Wypisuje liczbę 2 którą zadeklarowałem
    int tablica[ 3 ];
    tablica[ 0 ] = 5;
    tablica[ 1 ] = 10;
    tablica[ 2 ] = 15;
    funkc2( tablica );
    cout << "Liczby koncowe w tablicy w bloku glownym programu to: " << endl; //Wypisuje liczby wylosowane w  funkc2 (a nie 5,10,15 które zadeklarowałem)
    int b = 0;
    do
    {
        cout << "Tablica nr " << b << " wynosi " << tablica[ b ] << endl;
        b++;
    } while( b < 3 );
   
    return 0;
}

Gdy program zakończy zadanie wtedy okazuje się że zmienna 'a' nie została nadpisana w funkcji1 natomiast tablica została nadpisana w funkcji2. Jaka jest reguła nadpisywania tablic i zmiennych? Zaznaczam że próbowałem też zamiast typu void dać typ int(Ze zwracanym return 0), lecz wynik był taki sam Za wszelką okazaną pomoc serdecznie dziękuje:]
P-129056
Brunon3
» 2015-03-24 18:03:52
Słowo kluczowe: referencja C++.
P-129059
Monika90
» 2015-03-24 18:05:54
Jak napiszesz coś takiego
C/C++
void funkc2( int c[] )
to efekt będzie dokładnie taki sam jakbyś napisał
C/C++
void funkc2( int * c )
czyli c to wskaźnik.

Z kolei jak wywołujesz tę funkcję w ten sposób
C/C++
funkc2( tablica );
to działa to dokładnie tak jakbyś napisał
C/C++
funkc2( & tablica[ 0 ] );
czyli tablica jest automatycznie konwertowana na wskaźnik do elementu o indeksie 0
P-129060
Kontekst
Temat założony przez niniejszego użytkownika
» 2015-03-24 18:10:27
Dziękuję Monika90 i Brunon3:) Z tymi informacjami dalej sobie dam radę.
P-129063
« 1 »
  Strona 1 z 1