Wskaźniki - Help

0

Pomoże ktoś? Proszę, bardzo mi zależy. Będę wdzięczny. Z góry dzięki

  1. Niech *wsk = "tekst". Wyswietl adres, na ktory wskazuje wsk.
  2. Wyjasnij roznice miedzy przesylaniem argumentu do funkcji przez wskaznik i referencje.
  3. Niech istnieje double tab[5]. Co oznaczaja: tab+1; *tab+1; &tab+1; *(tab+1); tab[0]+1; &tab[0]+1; tab++ ?
  4. Niech double *w wskazuje na tab. Co oznaczaja: w+1; w+=1; *w+1; &w+1; *(w+1); w[0]+1; &w[0]+1; w++; *(&w[2]-1) ?
0

A czego dokładnie nie rozumiesz? Tutaj ktoś może Ci pomóc, ale nikt nie będzie niczego robił za Ciebie (no chyba że umieścisz ogłoszenie w dziale Praca).

0
  1. Niech wsk = "tekst". Wyswietl adres, na ktory wskazuje wsk.
    wsk musi być typu char
    . Traktujesz wtedy normalnie jak char*

  2. Wyjasnij roznice miedzy przesylaniem argumentu do funkcji przez wskaznik i referencje.
    przez wskaźnik: kopiowany jest wskaźnik, do składowych obiektu odwołujesz się jak przez wskaźnik (czyli operator wyłuskania ->)
    przez referencję: przekazywany jest adres, obiekt nie jest kopiowany. Odwołujesz się jak do normalnego obiektu
    W obu przypadkach ma się bezpośredni dostęp do przekazanego obiektu (tzn. można zmieniać jego wartość.

  3. Niech istnieje double tab[5]. Co oznaczaja: tab+1; *tab+1; &tab+1; *(tab+1); tab[0]+1; &tab[0]+1; tab++ ?
    tab+1 to wskaźnik(!) na drugą komórkę
    *tab+1 jest wartością pierwszej komórki zwiększoną o 1
    &tab+1 jest poniekąd głupotą (adres wskaźnika tablicy przesunięty o 1 w prawo)
    tab[0]+1 to to samo co *tab+1, czyli pierwsza komórka powiększona o 1
    &tab[0]+1 to to samo co &(*tab)+1, czyli tab+1, czyli adres drugiej komórki
    tab++ - przesunięcie pierwszego indeksu w prawo, czyli teraz pierwszą komórką będzie druga komórka

  4. Niech double *w wskazuje na tab. Co oznaczaja: w+1; w+=1; *w+1; &w+1; *(w+1); w[0]+1; &w[0]+1; w++; *(&w[2]-1) ?
    jeśli double *w=tab, wtedy tab i w to jedno a to samo

mam nadzieję że sie nigdzie nie pomyliłem

0

Razi91: Tak się zastanawiam nad sensem tego co napisałeś:

przez wskaźnik: kopiowany jest wskaźnik, do składowych obiektu odwołujesz się jak przez wskaźnik (czyli operator wyłuskania ->)

Kopiowana jest wartość tego wskaźnika czyli adres obiektu.

przez referencję: przekazywany jest adres, obiekt nie jest kopiowany. Odwołujesz się jak do normalnego obiektu

No nie jest kopiowany podobnie jak w przypadku wskaźnika.
Różnica polega tylko na sposobie wywołania funkcji (a dokładniej sposobie zapisu argumentu funkcji) oraz na odwoływaniu się do obiektu wewnątrz tej funkcji.

0
  1. Niech *wsk = "tekst". Wyswietl adres, na ktory wskazuje wsk.

Jak dla mnie, wyjątkowo nieprecyzyjne pytanie.

wsk może być typu:
char* (niby oczywiste, ale głupie - to znaczy że jakiś char == "tekst", co jest oczywiście niemożliwe)
char** (wszystko teoretycznie pasuje, wychodzi że char* == "tekst". Tylko że wskaźnik to liczba...
string* (najbardziej pasujące)

Oczywiście niepotrzebnie kompiluje, bo prawdopodobnie zadającemu do głowy nie przyszły takie wątpliwości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1