Nadpisywanie tablicy a nadpisywanie jednej zmiennej
Ostatnio zmodyfikowano 2015-03-24 18:10
Kontekst Temat założony przez niniejszego użytkownika |
Nadpisywanie tablicy a nadpisywanie jednej zmiennej » 2015-03-24 17:49:02 #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; 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; 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:] |
|
Brunon3 |
» 2015-03-24 18:03:52 Słowo kluczowe: referencja C++. |
|
Monika90 |
» 2015-03-24 18:05:54 Jak napiszesz coś takiego to efekt będzie dokładnie taki sam jakbyś napisał czyli c to wskaźnik. Z kolei jak wywołujesz tę funkcję w ten sposób to działa to dokładnie tak jakbyś napisał funkc2( & tablica[ 0 ] );
czyli tablica jest automatycznie konwertowana na wskaźnik do elementu o indeksie 0 |
|
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ę. |
|
« 1 » |