Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Poczatek kariery z c++ (Czkawka aka mega amator).


Rekomendowane odpowiedzi

Opublikowano

@up

To Ty tak ciągle mówisz lol.

 

"Oh, chodziło mi o coś innego, jesteś idiotą że się nie domyśliłeś, przecież to oczywiste że miałem coś innego na myśli"

 

A co do kodu 4grr to co on pokazuje ? A mianowicie tylko to że c++ ma ścisła kontrolę typów, tj np. zwykła liczba 0x8000000 jest interpretowana jako unsigned int, mimo że mogła by być z powodzeniem użyta jako pointer, kompilator wyrzuca błąd. Dlaczego ? C++ ma ścisła kontrolę typów.

 

Nie pozwala to na bezpośrednie przypisanie liczby do pointera (tj bez rzutowania), ale rzutując da się to zrobić. Da się zinterpretować zwykła liczbę jak wskaźnik.

np:

char * a = (char*)0x04010000;

 

Ten przykład pokazuje że tak naprawdę pointer jest liczbą, a to że nie można przypisać do niego liczby bez castowania świadczy tylko i wyłączenie i ściłej kontroli typów.

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

http://ideone.com/duWao

Proszę, nowy kod.

Co on pokazuje?

Że klasa TablicaIP z powodzeniem może być użyta jako HeaderBitmapy; tylko głupi kompilator wyrzucałby błąd, gdybym próbował przypisać bez cast'owania ;|

Nie pozwala mi na bezpośrednie przypisanie TablicyIP jako HeaderaBitmapy (tj bez rzutowania), ale rzutując już da się to zrobić.

Da się zinterpretować TablicęIP jako HeaderBitmapy.

 

Ten przykład pokazuje, że tak naprawdę TablicaIP jest HeaderBitmapy, a to, że nie można przypisać do niego liczby bez castowania świadczy tylko i wyłącznie o ścisłej kontroli typów.

 

 

PS

Tak, linker zwraca błąd, musiałem najwidoczniej gdzieś podziać definicję funkcji... Szukam i szukam, zaraz znajdę.

 

 

@EDIT

My point being:

Typ definiuje czym jest dany obiekt.

Absurdem jest twierdzić, że dwa obiekty są w zasadzie tym samym, ale mają inne typy i potrzeba konwersji, aby je utożsamić - gdyż dokonać rzutowania można absolutnie wszystkiego na wszystko.

Istnieją mechanizmy języka, dzięki którym CZASAMI otrzymujemy coś sensownego rzutując wskaźniki na inne typy.

Ale czy naprawdę uzyskamy coś rozsądnego rzutując void* na float? A przeciceż możemy to zrobić. Czy void* to to samo co float?

Również możemy rzutować long long int* na char*. A przecież albo stracimy, albo ukradniemy siedem bajtów.

Ale rzutować tak możemy. Czy te dwa typy są w więc zasadzie takie same?

 

NIE NIE SĄ BO TO INNE TYPY

 

 

 

 

@DOWN

Zmęczyłem się.

Bardzo podobają mi się przykłady liczb ;]

Ta sygnatura jest pusta.

Opublikowano

co innego rzutować void* na float, a co innego rzutować void* na inny wskaźnik.

 

I tak o to, TablicaIP nie stała się nagłówkiem bitmapy, tylko pointer na klase Tablica_IP zaczął wskazywać na strukture HeaderBitmapy.

 

Pointer w c++ rzeczywiście ma to do siebie, w odróżnieniu od samej liczby jak na przykład liczba 1 lub 2 (to są tylko przykładowe liczby, równie dobrze może to byc liczba 123 lub 999121(uwaga: mówiąc liczba w tym konkretnym wypadku mam na myśli liczbę całkowitą(czyli nie np. float))) że oprócz wartości liczbowej, w niektórych środowiskach programistów zarówno unixowych jak i innych, nazywaną adresem, przechowuję również typ zmiennej na którą wskazuje. O czym to świadczy ? Jeżeli spojrzymy na wskaźnik jako adres to jest on tylko i wyłącznie liczbą bez typu obiektu na który wskazuje (jak void*). A jeżeli spojrzymy na pointer jako adres wskazujący na określony typ obiektu (w szerokim tego słowa znaczeniu) to nadal będzie on liczbą, z dodatkową naleciałością w postaci typu obiektu który znajduje się pod komórką pamieci, której to pozycja jest określana liczbą która to głównie definuje zawartość wskaźnika. (UWAGA: zazwyczaj obiekt nie znajduje się w jednej komórce pamięci (tzn ta adres wskazujący na komórke pamięci wskazuje na, co warto podkreślić, początek danego obiektu)). Jednakźe trzeba również powiedzieć że typ wskazywanego obiektu jest również bardzo ważnym składnikiem wielu wielu wskaźników. Wydaje mi się że wystarczająco dobrze udowodniłem, moimi argumentami, zarówno od strony merytorycznej, której niektórym mogłoby się wydawać unikałem, jak i od tej trochę innej (strony).

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

Dziękuję za wszystkie uwagi i sugestie. Proszę o oceny i komentarze nowego programu ;).

 

 

3. Gra w "zgadywankę".

Download: http://www42.zippyshare.com/v/36424737/file.html

Skan: http://virusscan.jotti.org/pl/scanresult/9294397df739ad7cdc8267af7f0b80a6bdcc6f51

Kod źródłowy: http://wklej.to/TIsPE

Opublikowano

Na pierwszy rzut oka może być.

 

Jeden fail:

 

int akcja, co, l1, l2, l3, blad;

 

Zmienne globalne ? Może być ale... to bardzo nie ładnie. Należy tworzyć zmienne lokalne tj deklarowane wewnątrz funkcji. Przy duzej ilości zmiennych globalnych robi się syf... no i to brzydko wygląda takie zmienne globalne. Poważnie mówie, jak widze że ktoś ma zadkelarowane 10 zmiennych globalnych które z łatwością mógłby zadeklarowac lokalnie to WIEM że jest początkującym/chujowym programistą.

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

Na pierwszy rzut oka może być.

 

Jeden fail:

 

int akcja, co, l1, l2, l3, blad;

 

Zmienne globalne ? Może być ale... to bardzo nie ładnie. Należy tworzyć zmienne lokalne tj deklarowane wewnątrz funkcji. Przy duzej ilości zmiennych globalnych robi się syf... no i to brzydko wygląda takie zmienne globalne. Poważnie mówie, jak widze że ktoś ma zadkelarowane 10 zmiennych globalnych które z łatwością mógłby zadeklarowac lokalnie to WIEM że jest początkującym/chujowym programistą.

 

Zauważ, że poinformowałem w pierwszym poście, także w nazwie tematu, że dopiero rozpoczynam naukę.

I nie mogę się tutaj z Tobą zgodzic, bo czy początkujący = CHUJOWY?

Może wpierw poczytaj w słowniku slangowym, co owe słowo znaczy.

Lepiej zastanów się nad samym sobą. Nad swoim poziomem zaawansowania i chciałbym Cie poprosic, abyś nie wypowiadał się więcej w tym temacie, ponieważ hejterów mam po dziurki w nosie.

Szanuję Twoją opinię i jestem Ci za nią bardzo wdzięczny, ale po co te wulgaryzmy i wyzywanie od amatorów? Tak wiem. Jestem nim, nie musisz mi o tym przypominac.

Ty także miałeś swoje początki - winił Cię ktoś za to?

Opublikowano

Wyzywaniem od amatorów ? Czy nazwanie Ciebie amatorem lub początkującym jest dla Ciebie wyzwiskiem ? Czy nazwanie psa PSEM jest obrazą ?

 

Poza tym wcale nie chciałem Cię obrazić, widocznie niewłaściwie mnie zrozumiałeś.

 

"początkującym/chujowym programistą."

Otóż ukośnik w tym zdaniu pełni funkcje słówka "lub" (nie w stricte logicznym tego słowa znaczeniu).

jesteś początkującym albo chujowym programistą. Wiemy już że jesteś początkujący, więc nie chujowy.

Chciałem Cię tylko poinformować że takie nadmierne używanie zmiennych globalnych świadczy o programiście źle, i tu dodam, że to nie jest moja odosobniona opinia - tak po prostu jest, dlatego tego unikaj.

Relax.

That's all.

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
  • 2 miesiące temu...
Opublikowano

Trochę zaniedbałem swój temat, za co bardzo przepraszam, ale mam wielki zapierdziel w szkole.

Niektóre linki powygasały, dlatego do jutra powinienem napisać coś nowego i zrobić reupload plików.

Dziękuję za komentarze i sugestie.

Opublikowano

Linki zaktualizowane. Dodaje nowy program. Może nie zachwyca, ale planowałem użyć wątków, tylko czas nie pozwolił :P. W następnej wersji będzie z wątkami, odliczaniem czasu itp.

 

4. Nauka pisania bez patrzenia na klawiature ver 1.

Download: http://niunio.ugu.pl/cpp/pisanie.exe

Skan: http://virusscan.jot...960ffe709ba9f1a

Kod źródłowy: http://wklej.to/z7Wq7

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...