Wpis z mikrobloga

Mógłby ktoś w prostych słowach wytłumaczyć mi jak działają wskaźniki w c++ lub odesłać do jakiegoś idiotoodpornego poradnika? Zależy mi by było jak najwięcej przykładów z wykorzystaniem tzw. podstaw podstaw. #cpp #pomocy
  • 4
@d__g: poradnika nie znam, ale czytałem kiedyś takie zobrazowanie, że jeśli zmienna np typu int byłaby fizycznie jakimś przedmiotem, to wskaźnik na int byłby fizycznie wskaźnikiem (np laserowym jak się teraz używa na wykładach, lub strzałką), który wycelowany jest w ten przedmiot. Na jeden przedmiot może wskazywać wiele wskaźników, ale na odwrót już nie - jeden wskaźnik zawsze celuje w jeden obiekt. Tak samo w c++ ( czy innym języku ).
@Kicer86: Dziękuję ślicznie, rozumiem już o co chodzi, lecz ciągle mam problem kiedy z tego korzystać. Jeszcze mam pytanie dodatkowe - wartości tablicy same w sobie są wskaźnikami, mam rację?
@d__g: Zacznę od pytania dodatkowego, bo jest prostsze. Wartości tablicy nie są wskaźnikami, ale zmienna tablicy bardzo często jest utożsamiana ze wskaźnikiem na pierwszy element który przechowuje.

Przykład:

int arr[3] = {1, 2, 3};
int * ptr = arr;

if(ptr[0] == arr[0])
std::cout << "ok" << std::endl;

Natomiast co do tego kiedy ich używać… to ciężko powiedzieć, bo mają one masę zastosowań. Dla początkującego, mocno upraszczając, można powiedzieć, że kiedy chcesz
@d__g: tak jak @kotit powiedział - elementy tablicy nie są wskaźnikami. wyobraź sobie to tak, że elementy tablicy zajmują kolejne komórki pamięci. Tablica jest niejako wskaźnikiem na 1. element. Kiedy używasz nawiasów kwadratowych by dostać się do odpowiedniego elementu, w praktyce działa to tak, że do wskaźnika na 1. element dodawana jest odpowiednia wartość wynikająca z numeru elementu, który wybrałeś i w ten sposób dostajesz się do odpowiadającej mu komórki. Zauważ,