\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt \usetikzlibrary{arrows.meta} \begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] %uncomment if require: \path (0,460); %set diagram left start at 0, and has height of 460 % rect val \draw (40, 150) -- (200, 150) -- (200, 220) -- (40, 220) -- cycle ; % rect var \draw (220, 60) -- (380, 60) -- (380, 130) -- (220, 130) -- cycle ; % rect addr \draw (400, 150) -- (560, 150) -- (560, 220) -- (400, 220) -- cycle ; % rect ptr \draw (220, 240) -- (380, 240) -- (380, 310) -- (220, 310) -- cycle ; % Arrow var-addr \draw [-{To[width=3mm, length=5mm]}] (380, 95) -- (480, 150) ; % Arrow addr-ptr \draw [-{To[width=3mm, length=5mm]}] (480, 220) -- (380, 275); % Arrow ptr-val \draw [{To[width=3mm, length=5mm]}-{To[width=3mm, length=5mm]}] (220, 275) -- (120, 220); % Arrow val-var \draw [{To[width=3mm, length=5mm]}-{To[width=3mm, length=5mm]}] (120, 150) -- (220, 95); % Arrow ptr-var \draw [dotted,-{To[width=3mm, length=5mm]}] (300, 240) -- (300, 130); \draw (440,80) node [anchor=north west][inner sep=0.75pt] [align=left] {Хранит своё\\значение по}; \draw (55,160) node [anchor=north west][inner sep=0.75pt] [align=left] {Значение переменной}; \draw (250,75) node [anchor=north west][inner sep=0.75pt] [align=left] {Переменная \\(идентификатор)}; \draw (450,165) node [anchor=north west][inner sep=0.75pt] [align=left] {Адрес}; \draw (260,250) node [anchor=north west][inner sep=0.75pt] [align=left] {Указатель}; \draw (440,270) node [anchor=north west][inner sep=0.75pt] [align=left] {Сохраняется в}; \draw (100,70) node [anchor=north west][inner sep=0.75pt] [align=left] {Простое чтение\\и/или запись}; \draw (65,255) node [anchor=north west][inner sep=0.75pt] [align=left] {Разыменование\\(как для чтения, так\\и для записи)}; \draw (250,160) node [anchor=north west][inner sep=0.75pt] [align=left] {тоже переменная\\поэтому для него\\тоже создаётся\\идентификатор}; \end{tikzpicture}