Рассмотрите char firstLetter=word[0];
, где вы ничего не делаете с firstLetter
, кроме того, используйте его как сахар для удобочитаемости. Есть ли что-то отличное от #define
, которое может просто сделать встроенный псевдоним вместо выделения новой памяти? Я понимаю, скрипт может быть написан, но если что-то уже существует ...Псевдоним вместо новой переменной для синтаксиса сахара
ответ
Если вопрос действительно является о C++, вы всегда можете создать псевдоним для объекта:
char& firstLetter=word[0];
Это сделает firstLetter
и псевдоним для word[0]
(предполагая, что word
является массивом, а не указатель это будет изменено позже).
Это то, что я искал. Спасибо, Бо. Для тех, кто читает это, я также узнал о constexpr в C++ 11 для подобных, но не идентичных целей. – user1420741
Здесь нет выделения памяти; значение word[0]
может быть скопировано в регистр или в стек, но это зависит от компилятора, нужно ли это делать.
Обратите внимание, что «встроенный псевдоним» приведет к значительному ухудшению кода; выражение word[n]
предполагает некоторое вычисление, которое, если вы использовали какую-то подстановку, повторялось несколько раз.
Ну, если компилятор не выполняет общее исключение суб-выражения и вычисляет адрес один раз. Это может быть очень хорошо (за исключением неприятных вещей, таких как «volatile»). Это не вопрос эффективности. – delnan
C++ или C (или оба)? Ответ (и его удобство) различается между двумя языками. – delnan
C++ в первую очередь .. – user1420741