In fact, the translation is absolutely correct. See what happens:
Any object in any programming language consists of two inseparable entities:
- Values (whatever we mean by that)
- The name of this value
In many C-type programming languages, the distinction between these entities is not emphasized. For example, in many languages you can write something like:
a := a + 7;
Here the same lexeme "a" is used in different senses. Right - as a value, on the left - as a name. Novice programmers often do not realize this. In some languages this distinction is made explicit. For example, in the Shell language, the variable name can be "A", and the value - "$ {A}".
Returning to your question. In many programming languages, there is a special type of variable whose values are the names of other variables. What is a link (pointer)? This machine address is the name of the cell containing the value.
Therefore, “dereferencing” means to tell the processor that the value of this variable should be turned into the name of some other variable. Like this:
int a; int *pa = &a; a = 3; *pa = a + 4;
The result is pretty obvious. Actually, we told the processor that:
- Although pa stands to the left of the assignment character, we are not interested in her name.
- We need the name of some other variable given by its value.
- In fact, in this example, the name pa disappears! She is "dereferenced."