1) Да, при условии, что он объявил extern
(обратите внимание, что const
объекты имеют статическую связь по умолчанию; да, это нелогично;)).
2) Зависит от того, как этот arr используется кодом, который на него ссылается. Если вы хотите, чтобы новые записи были полезны для внешнего кода, либо arr
должен заканчиваться NULL, либо он должен сопровождаться extern const unsigned arr_size = sizeof(arr) / sizeof(arr[0])
.
3) Хорошо. Сам массив состоит из указателей на литеральное представление; если изменяется литерал, расположение самого массива не изменится.
4) Нет, потому что arr
- это непрерывная последовательность указателей на литеральные представления, вот и все.