October 21st, 2019

Указатели и константы

Опять трудности перевода.

В языке C++ есть такие понятия:
int var;
int const var1 = 100;
int *ptr;
int const *ptr1;
int *const ptr2;
int const *const ptr3;
где

var — переменная (variable),
var1 — константа (constant),
100литерал (literal),
ptr — указатель (pointer),
ptr1 — указатель на константу (pointer to constant),
ptr2 — константный указатель (constant pointer),
ptr3 — константный указатель на константу (constant pointer to constant)

и так далее (подробности можно посмотреть тут).

В общем, всё понятно. Но в учебнике Лафоре наткнулся на словосочетание «pointer constant» (стр.493 оригинала):

We’ve learned that everything in the computer’s memory has an address, and that addresses are pointer constants. We can find the addresses of variables using the address-of operator &.

Официальный перевод (стр.468):

Мы узнали, что все объекты имеют адреса в памяти компьютера и что адреса — это указатели константы. Адрес переменной можно получить, используя операцию получения адреса &.


Опять «гениальный» дословный перевод. Если уж и переводить дословно, то первое слово в этом словосочетании является прилагательным, то есть «указательные константы». Но смысл словосочетания от этого понятным не становится.

Как я понимаю, в данном случае под словом «константы» имеются в виду фиксированные значения, то бишь литералы. Тогда перевод должен быть примерно такой:

Мы узнали, что все объекты имеют адреса в памяти компьютера и что адреса — это литералы ссылочного типа. Адрес переменной можно получить, используя операцию получения адреса &.