Причина, по которой вы получаете одинаковые выходные данные для обоих, состоит в том, что они оба указывают на один и тот же литерал (хотя и не на один и тот же адрес).
Предположим, у вас было следующее:
char userLoginName[] = "Smithlogin";
char password[] = "Smithpass";
char *_userLoginName, *_password;
_userLoginName = &userLoginName[0]; //1st way
_password = password; //2nd way
У вас могут быть разные выходные данные для _userLoginName и _password.
На самом деле имя массива является указателем.Таким образом, userLoginName - это указатель на первый элемент массива символов.
Так что для оператора [].Скажем, у вас есть и массив с именем обр.arr [x] на самом деле * (arr + x).Он перемещает указатель на указанную величину, чтобы указать на то, что вы хотите, и разыменовывает его.
Ваши два метода назначения указателя делают, по сути, одно и то же, если они работают с одним и тем же массивом, но только потому, что высмотрим на элемент 0.