В большинстве случаев имя массива оценивается как значение, которое можно присвоить указателю, но это все же значение, а не фактический указатель.
Это аналог значения, скажем, 17
. Вы можете взять значение 17
и присвоить его int. Как только вы это сделаете, вы можете увеличивать, уменьшать и иным образом манипулировать этим int
. Однако вы ничего не можете сделать для самого 17
- это то, что есть, и его нельзя изменить.
Имя массива почти такое же. Он имеет правильный тип, чтобы иметь возможность назначать его указателю, но сам по себе это просто значение, которым вы не можете манипулировать. Если вы присваиваете это значение указателю, вы можете манипулировать указателем, но вы никогда не сможете многое сделать с самим исходным значением - оно такое, какое оно есть, и его нельзя изменить.