Skocz do zawartości
MaSTaH

Łamigłówka C++

Rekomendowane odpowiedzi

Wyjaśnij poniższe instrukcje i zilustruj odpowiednimi przykładami:

 

wektor* (funkcja)(float * & a, const int * const ptr_n);

wektor (*funkcja(float *, wektor * const ptrWek))[2];

void* (*pole)( void (*f)(int &z), const wektor *ptrWek);

short unsigned int(**a)[3];

z = new wektor**[m];

 

Kto da rade? :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie rozumiem, co Wy chcecie od składni kochanego c++ ;P

A tak na serio to niezła masakra...

 

1.

wektor* (funkcja)(float * & a, const int * const ptr_n);

 

Deklaracja funkcji o nazwie 'funkcja', której parametrami wywołania są kolejno:

-referencja do wskaźnika do typu float, o nazwie 'a' (float * & a)

-stały wskaźnik do stałej typu int, o nazwie ptr_n (const int * const ptr_n)

(stały wskaźnik to wskaźnik, którego nie można przesuwać, natomiast wskaźnik do stałej to wskaźnik do obiektu, którego wartości nie można zmieniać)

Funkcja ta zwraca wskaźnik do obiektu klasy wektor.

 

2.

wektor (*funkcja(float *, wektor * const ptrWek))[2];

 

Również deklaracja funkcji:

'funkcja' jest funkcją przyjmującą jako argumenty(parametry):

-wskaźnik do zmiennej typu float (float *)

-stały wskaźnik(o nazwie ptrWek) do obiektu klasy wektor (wektor * const ptrWek),

i zwracającą wskaźnik do dwuelementowej tablicy obiektów klasy wektor

 

3.

void* (*pole)( void (*f)(int &z), const wektor *ptrWek);

 

Deklaracja wskaźnika do funkcji:

'pole' jest wskaźnikiem do funkcji przyjmującej jako argumenty:

-wskaźnik(o nazwie f) do funkcji przyjmującej jako parametr referencję(o nazwie z) do zmiennej typu int i zwracającej typ void(void (*f)(int &z))

-wskaźnik(o nazwie ptrWek) do stałego obiektu klasy wektor(const wektor *ptrWek)

zwracającej wskaźnik typu void

 

4.

short unsigned int(**a)[3];

 

Deklaracja wskaźnika(o nazwie a) do wskaźnika do 3-elementowej tablicy obiektów typu short unsigned int

 

5.

z = new wektor**[m];

 

przypisanie do wskaźnika(o nazwie 'z') dynamicznie alokowanej, m-elementowej tablicy wskaźników do wskaźników do obiektów klasy wektor

 

 

 

Czytając cuś takiego(pierwsze cztery przypadki) idziemy od identyfikatora(nazwy) całego ustrojstwa najpierw na prawo do ewentualnego zamknięcia nawiasu, później od identyfikatora na lewo, znowu do zamknięcia nawiasu. Po wyjściu z nawiasu znowu na prawo itd...

Generalnie główną zasadą tu obowiązującą jest zasada pierwszeństwa operatorów. Oto ich priorytety(od najważniejszego):

1. Nawias, czyli: '()', oznaczający albo wymuszenie pierwszeństwa(jak w matematyce), albo funkcję(listę jej parametrów)

2. Tablica, czyli: '[]'

3. Wskaźnik/referencja(chyba mają ten sam priorytet), czyli byłoby odpowiednio: '*'/'&'

 

Uff........

Strasznie to wszystko zamotane, ale mam nadzieję, że się nigdzie nie machnąłem :) (starałem się pisać jakoś w miarę zrozumiale:))

Z góry przepraszam za zawiły styl mojej wypowiedzi jak i za łopatologię;)

 

 

Gdzie Ty Człowieku studiujesz;))?

Edytowane przez __max

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...