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

Wskaźniki-dlaczego nie mogło być prościej?

Ostatnio zmodyfikowano 2010-02-24 18:08
Autor Wiadomość
marek
Temat założony przez niniejszego użytkownika
Wskaźniki-dlaczego nie mogło być prościej?
» 2010-02-24 09:27:33
Deklaruje się tak
int liczba = 9;
int *wsk_liczba;  
wsk_liczba = &liczba;
A dlaczego nie tak?
int liczba = 9;
int *wsk_liczba;
Deklaracja "wsk_liczba = &liczba" nie wnosi żadnej nowej informacji dla kompilatora C++. Inaczej, na podstawie 2 pierwszych deklaracji, kompilator mógłby sam wydedukować tą trzecią. Kompilator byłby tylko ciut bardziej skomplikowany( dla użytkownika bez znaczenia). Czy tym kierowali się twórcy C++?
P-14086
madmike44
» 2010-02-24 09:42:01
Jak to nie wnosi.. Przecież w dwóch pierwszych liniach definiujesz sobie pewne elementy, ale dopiero trzecia linia jest kluczowa - ustawiasz wskaźnik tak, żeby wskazywał adres, pod którym pamiętana jest konkretna zmienna.... Niby skąd kompilator miałby wiedzieć, że dwie pierwsze linie mają ze sobą coś wspólnego.....??
P-14087
marek
Temat założony przez niniejszego użytkownika
Nie wnosi!
» 2010-02-24 09:58:37
Skoro ja na podstawie 2 pierwszych instrukcji, mogę napisać tą trzecią, to tym bardziej może to zrobić kompilator. Inna rzecz, że ta trzecia instrukcja w niczym nie przeszkadza.
P-14088
Elaine
» 2010-02-24 10:08:11
A to kompilator ma ci czytać w myślach? Skąd miałby mieć pewność, że przypiszesz do tego wskaźnika adres tej, a nie innej zmiennej? Wskaźniki to zmienne jak każde inne - do intów też miałby przypisywać 69...?
P-14090
madmike44
» 2010-02-24 10:13:29
Tylko że coś takiego trzeba kompilatorowi powiedzieć - to nie jasnowidz, żeby wiedział, że akurat te dwie linijki ma potraktować w ten sposób, że wskaźnik z linii drugiej ma wskazywać na zmienną z linii pierwszej.

Może ja chcę akurat zrobić tak:

C/C++
int liczba_1 = 17;
int * wsk_1;
int liczba_2 = 44;
int * wsk_2;

wsk_2 = & liczba_1;
wsk_1 = & liczba_2;

I jak ten biedny kompilator bez dwóch ostatnich linii miałby sobie poradzić :) Kompilator ma wykonywać dokładnie to, co mu każemy - proste, jasne instrukcje. A nie domyślać się, co mamy na myśli.... Tworzymy zmienną typu całkowitego i wskaźnik na liczbę całkowitą - i są dwie opcje - albo te dwa elementy będą miały ze sobą coś wspólnego, albo nie - i w takiej sytuacji co ? Kompilator ma wylosować którąś z dwóch opcji ?? :) A możliwości jest nieskończenie wiele..

Swoją drogą, gdyby kompilatory były na takim poziomie abstrakcji, o jakim niektórzy marzą, to programiści nie byliby potrzebni :)
P-14092
marek
Temat założony przez niniejszego użytkownika
Dzięki.
» 2010-02-24 10:35:21
Dla programisty to nieduża dodatkowa robota (napisanie "wsk_liczba = &liczba;")
,za to zwiększa się elastyczność w programowaniu. Dalej coś mnie jeszcze gryzie, ale mniej.
P-14093
WunM
» 2010-02-24 11:12:09
P-14096
Elaine
» 2010-02-24 11:12:36
Swoją drogą, gdyby kompilatory były na takim poziomie abstrakcji, o jakim niektórzy marzą, to programiści nie byliby potrzebni
Pisałeś kiedykolwiek w jakimś języku funkcyjnym...?
P-14097
« 1 » 2 3 4
  Strona 1 z 4 Następna strona