Wskaźniki-dlaczego nie mogło być prościej?
Ostatnio zmodyfikowano 2010-02-24 18:08
marek Temat założony przez niniejszego użytkownika |
» 2010-02-24 15:23:20 Nie wszystko do mnie dotarło, ale "przeczytaj" było trochę szokujące. To tak jakby prezes Toyoty (nie były prezes Toyoty!)z wyraźną przyjemnością opowiadał o wadach jego samochodów. |
|
madmike44 |
» 2010-02-24 15:44:17 Pisałeś kiedykolwiek w jakimś języku funkcyjnym...? Jeżeli chodzi Ci o język czysto funkcyjny (np. Haskell) to nie miałem z takimi do czynienia.. A czemu pytasz ? |
|
marek Temat założony przez niniejszego użytkownika |
» 2010-02-24 16:15:56 Męczy mnie jeszcze jedna rzecz #include <iostream> #include <conio.h> int main() { using namespace std; int liczba = 9; int * wsk_liczba = & liczba; cout <<* wsk_liczba << & liczba; getch(); return 0; } Skoro "*wsk_liczba= &liczba;" to cout powinien wyświetić 2 takie same wartości. Nie jest tak i trochę rozumiem intencję twórców C++. Ale przyznacie, że w tym jest pewna niekonsekwencja. A może po prostu wyrażenie int * wsk_liczba = & liczba; należy traktować jako skrót 2 wyrażeń int * wsk_liczba; wsk_liczba = & liczba; |
|
Elaine |
» 2010-02-24 16:17:42 Jeżeli chodzi Ci o język czysto funkcyjny (np. Haskell) to nie miałem z takimi do czynienia.. A czemu pytasz ? |
Pytam się, bo poziom abstrakcji jest tam niezwykle wysoki (piszesz, co program ma robić, a to, jak to ma robić to już sprawa kompilatora i bibliotek), a programiści jakoś ciągle do tych języków są potrzebni. |
|
WunM |
» 2010-02-24 16:19:20 // poczekamy zobaczymy ;) |
|
madmike44 |
» 2010-02-24 16:26:55 Skoro "*wsk_liczba= &liczba;" to cout powinien wyświetić 2 takie same wartości. Nie jest tak i trochę rozumiem intencję twórców C++. Ale przyznacie, że w tym jest pewna niekonsekwencja. No nie powinien - bo (*wsk_liczba) to liczba całkowita a &liczba to adres komórki w pamięci. Więc w pierwszym przypadku wyświetli się wartość wstawiona do zmiennej całkowitej, a w drugim po prostu numer komórki w pamięci - więc pewnie jakaś większa liczba :)
Gdybyś wyświetlał wartości wsk_liczba oraz &liczba, to wtedy uzyskałbyś to samo - adres komórki pamięci. |
|
Elaine |
» 2010-02-24 16:27:00 Skoro "*wsk_liczba= &liczba;" to cout powinien wyświetić 2 takie same wartości. |
Od kiedy? *wsk_liczba to wartość zmiennej, na którą wskazuje wskaźnik. &liczba to adres zmiennej liczba. Z kodu wynika, że liczba jest typu int i ma wartość 9. Czy &liczba też jest typu int i ma wartość 9? Jak wiemy, nie. Jest typu int* i ma wartość... jakąśtam. Ale 9 na bank nie będzie - adresy 0x00000000 - 0x00000FFF pod żadnym znanym mi systemem nie są oznaczone jako obecne. |
|
madmike44 |
» 2010-02-24 16:32:04 Pytam się, bo poziom abstrakcji jest tam niezwykle wysoki (piszesz, co program ma robić, a to, jak to ma robić to już sprawa kompilatora i bibliotek), a programiści jakoś ciągle do tych języków są potrzebni. Wiem, ale w tamtej wypowiedzi chodziło mi o poziom abstrakcji w praktyce nieosiągalny.. Np. na poziomie mózgu istoty rozumnej :) |
|
1 « 2 » 3 4 |