Нет семантической разницы между вашими тремя предложениями.
По сути, когда файл кода анализируется, препроцессор разбивает все на токены, и все последующие этапы процесса компиляции работают исключительно с этими токенами.Таким образом, интервал между токенами полностью игнорируется.
Синтаксис для простого объявления указателя (с объявленным единственным элементом и без инициализации) состоит из трех токенов: спецификатор типа, звездочка (которая обозначает, чтопеременная - это указатель) и, наконец, идентификатор.Таким образом, вы можете иметь любое количество пробелов между этими тремя, вообще не меняя семантику.
Причина, по которой люди выбирают один путь перед другим, связана со стилем и тем, что он выражает в отношении намерений.1008 *MyClass* myVar
проясняет, что тип myVar MyClass
.MyClass *myVar
проясняет, что маркер указателя принадлежит переменной * 1012. *
Таким образом, особенно рекомендуется вторая альтернатива, если вы решили объявить список переменных в одной инструкции.Например, MyClass myVar, *myPointerToVar
.
Еще одна хорошая альтернатива - всегда использовать вариант MyClass* myVar
и никогда не объявлять несколько переменных, в которых некоторые являются указателями.