różnice między przesyłaniem 4 elementu tablicy a tablicy 4 elementów
Ostatnio zmodyfikowano 2016-10-08 17:33
latajacaryba Temat założony przez niniejszego użytkownika |
różnice między przesyłaniem 4 elementu tablicy a tablicy 4 elementów » 2016-10-07 23:43:59 Witam. Pytanie błahe i w sumie powinienem to wiedzieć, ale lepiej późno, niż wcale. void funkcja( int tablica) - przesyłanie adresu zerowego elementu tablicy, potem możemy wskazać na ten adres wskaźnikiem i działamy. void funkcja2( int tablica[4]) I teraz tak: czym się to różni? w 2 kodzie przesyłamy treść 4 elementu czy 4 elementową tablicę? Bo mając taki kod: #include <iostream> using namespace std; void n( int t[ 4 ] ) { cout << t[ 0 ] << "\t" <<( int ) & t[ 0 ] << endl; cout << t[ 1 ] << "\t" <<( int ) & t[ 1 ] << endl; cout << t[ 2 ] << "\t" <<( int ) & t[ 2 ] << endl; cout << t[ 3 ] << "\t" <<( int ) & t[ 3 ] << endl; cout << t[ 8 ] << "\t" <<( int ) & t[ 8 ] << endl; }
int main() { int tab[ 10 ] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; n( tab ); return 0; } możemy wypisywać treść i adresy elementów innych niż czwarty, np 1,8,9 które nawet nie były przesłane do tablicy. Tak więc? |
|
mateczek |
» 2016-10-08 04:46:45 w deklaracji nic nie przesyłasz. trzeba rozróżnić deklarację, od wywołania void n( int t[ 4 ] ) { cout << t[ 0 ] << "\t" <<( int ) & t[ 0 ] << endl; cout << t[ 1 ] << "\t" <<( int ) & t[ 1 ] << endl; cout << t[ 2 ] << "\t" <<( int ) & t[ 2 ] << endl; cout << t[ 3 ] << "\t" <<( int ) & t[ 3 ] << endl; cout << t[ 8 ] << "\t" <<( int ) & t[ 8 ] << endl; }
int main() { int tab[ 10 ] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; n( tab ); return 0; }
void funkcja( int tablica )
|
żadne przesyłanie, tylko deklaracja funkcji przyjmującej za parametr zmienną int przez wartość.
void funkcja2( int tablica[ 4 ] )
|
Deklaracja funkcji, która przyjmie za parametr tablice typu int (wskaźnik na int). A cyfra cztery w nawiasach kwadratowych jest bez znaczenia!!! //wskaźnik prawie równa się tablica #include<iostream> using namespace std; void wypiszElementyTablicy( int start[], int * end );
int main() { int tab[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; wypiszElementyTablicy( & tab[ 3 ], tab + 8 ); }
void wypiszElementyTablicy( int * start, int end[] ) { for( int * i = start; i <= end; i++ ) { cout <<* i << " "; } cout << endl; for( int i = 0; i <= end - start; i++ ) { cout << start[ i ] << " "; } }
|
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-10-08 17:33:56 Super, teraz zrozumiałem, czyli w deklaracji ta 4 nie ma znaczenia, i mogłoby być tam równie dobrze 100 i nic by to nie zmieniło? Tak samo nawiasy [] mogłyby być puste i wszystko nadal wychodziłoby na to samo? |
|
« 1 » |