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
» 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.
P-14111
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 ?
P-14112
marek
Temat założony przez niniejszego użytkownika
» 2010-02-24 16:15:56
Męczy mnie jeszcze jedna rzecz
C/C++
#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ń
C/C++
int * wsk_liczba;
wsk_liczba = & liczba;
P-14114
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.
P-14115
WunM
» 2010-02-24 16:19:20
// poczekamy zobaczymy ;)
P-14116
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.
P-14118
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.
P-14119
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 :)
P-14121
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona