Uczę się C i zastanawiam się jak działa ten kod.

1. Zdaję się że rozumiem jak działa komparator- w przypadku sortowania zwraca informację czy zmienna z danym indeksem ma być przesunięta czy też nie (poprawcie mnie jeżeli się mylę) 

2. Ale mam problem ze zrozumieniem zapisu (int)a - o co w tym chodzi? Dlaczego tutaj jest zadeklarowany wskaźnik dwa razy? I w jaki sposób to działa? 

int
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Kochani, poddaje się. Przebrnąłem przez kila materiałów, ale się poddaje.

Jak w C++ stworzyć dynamiczną tablicę 2D (bez użycia vecotor) przy użyciu new
Chodzi mi o coś takiego:

int ** wsk = new int[x][y]
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@I_am_not_Even: przy okazji (być może to nie jest dla ciebie rozwiązanie, ale może przyda się w przyszłości):

niemal zawsze zamiast n-wymiarowej tablicy możesz użyć tablicy jednowymiarowej. Przykładowo zamiast deklarować tablicę

int ** wsk = new
  • Odpowiedz
@alibi_m: Wiem, ale chciałem pobrać multum różnych wskaźników, nie tylko oscylatorów i obliczanie wszystkiego gdzies tam w excelu bylo by po prostu mega niewygodne, dlatego pytam o stronkę, gdzie mogę dostać takie dane.
  • Odpowiedz
Następny etap nauki wskaźników, zaraz po tablicach wskaźników, jest odwołanie wskaźników? Chodzi o to żeby wskaźnik wskazywał wskaźnik. Wytłumaczy mi ktoś jakim cudem to działa,

int main()
{
char tab[10],**wdw,*w; // działający przykład
w=&tab
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Hertesus: możesz zrobić gets(tab); nie do końca rozumiem problem. Może poćwicz wskaźniki np. na intach, bez tablic? Tablice w C są... dziwne, bo są bardzo blisko wskaźników, ale łatwo się poplątać.

BTW: char* w = &tab wygląda kiepsko -- tu chyba jest niezgodność typów. Być może zależy od standardu C - dawno nie pisałem w tym języku. Wg. mnie w = tab, lub w = &tab[0] wyglądają lepiej. Co nie
  • Odpowiedz
Czuję się coraz pewniej używając wskaźników, więc napisałem sobie program który używa wskaźników, zamienia w duże litery na małe, a małe na duże. I o dziwo ten program działa. Przy okazji poznałem dwie funkcje. toupper i tolower.

#naukaprogramowania #jezykc #wskazniki
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Ciąg dalszy nauki wskaźników, Otóż przypisałem wskaźnikom zmienne czy jak to tam się nazywa,
Ale do rzeczy, jak już odpaliłem ten program, to on mi zwrócił takie coś
0xb757ee55,(nil),0xbeee3a50, O ile się orintuję to 1 i 3 to są adresy zmiennych w pamięci zapisane w systemie szesnastowym, Ale co to jest te (nil)? A drugie pytanie co w ogóle robi "%p"?

int main()
{
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Hertesus: Nie pomyl się przy definiowaniu zmiennych, bo czuję że ten zapis mógł Cię zmylić.
int *c,ch; - ta linia nie deklaruje wskaźnika c i integera ch, tylko dwa wskaźniki. Gwiazdka jakby "należy" do typu zmiennej a nie jej nazwy. Dlatego ja preferuję zapisywać to tak, wtedy jest wszystko jasne.
int* c, ch;

W tym programie deklarujesz więc 6 pustych wskaźników na int. I teraz tak:
* to operator wyłuskania, więc używając
  • Odpowiedz
@Calosija: Niestety, tutaj się mylisz. int* c, ch; zadeklaruje wskaźnik o identyfikatorze c na zmienną typu int, oraz zmienną typu int o identyfikatorze ch.

@Hertesus: T co zamieścił @Calosija jest ok. Pamiętaj, że jak chcesz wypisać adres na który wskazuje wskaźnik to używasz samego identyfikatora, bez gwiazdki. Wskaźnik to zmienna, której wartością jest adres innej zmiennej.
  • Odpowiedz
@Hertesus: Polecam poczytać książkę Stephena Praty o C, tam są dobrze opisane wskaźniki. I uważaj ze wskaźnikami. Łatwo sobie oko takim wskaźnikiem wybić.
  • Odpowiedz
Cześć miraski, robię coś podobnego tanków na zaliczenie i mam problem z prawdopodobnie wyciekiem pamięci. Siedzę na tym już od kilku dni i nadal nie wiem co robię nie tak. Prawdopodobnie coś się j---e przy usuwaniu Tanka. Dołączam kod.:

*Metoda w game wyglada tak metoda w game

*Metoda checkShoot wyglada tak: metoda w klasie collision

*Destruktor
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Destruktor EnemyTanka jest pusty, bo dziedziczy po klasie Tank


@lmrocks: destruktor EnemyTanka powinien być wirtualny (nie wiem czy jest).

enemies[i] =
  • Odpowiedz
@Ajdont: Jeżeli oba wskaźniki wskazują na tę samą tablicę (lub jeden element za nią) to wynikiem odejmowania będzie ptrdiff_t. W przeciwnym wypadku to undefined behavior. Jego wielkość jest oczywiście implementation defined i zależy od wielkości pointera. W twoim przypadku ma on zapewne taki sam rozmiar co int, więc nie jest generowane żadne ostrzeżenie.
  • Odpowiedz
Treść przeznaczona dla osób powyżej 18 roku życia...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach