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++? |
|
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.....?? |
|
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. |
|
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...? |
|
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: 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 :) |
|
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. |
|
WunM |
» 2010-02-24 11:12:09 |
|
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...? |
|
« 1 » 2 3 4 |