Краткий ответ: нет, вы не можете.
При инициализации такого нестатического массива, как этот, компилятор должен сгенерировать код для копирования начального состояния массива из хранилища в новоемассив.(Потому что это новый массив каждый раз, когда вы вызываете функцию.) На самом деле писать код, который делает это самостоятельно, не намного медленнее.
Длинный ответ: если вы хотите быть злымВы можете сделать это в C99, заключив массив в структуру и используя присвоение структуры ...
struct arrayWrapper
{
char* array[4];
};
{
struct arrayWrapper d;
...
d = (struct arrayWrapper){{1, 2, 3, 4}};
}
(синтаксис может быть не совсем правильным.)
Ноэто зло, и работает только в C99, так что не делай этого, ммм'кей?