Да, ваш код формально правильный (хотя см. Замечание Стива о const
).Он создаст массив с нулевым указателем типа char *
.
. Вы также можете сделать
char *argv[4] = { "foo", "bar" };
или
char *argv[10] = { "foo", "bar" };
, если ваш массивпо какой-то причине должен иметь определенный размер.В этом случае дополнительные элементы также будут установлены в нулевые указатели, даже если вы не инициализируете их явно.Но я бы сказал, что даже в этом случае лучше использовать
char *argv[4] = { "foo", "bar", NULL };
, потому что это гарантирует, что массив действительно достаточно длинный, чтобы заканчиваться нулем (если массив оказывается слишком короткимкомпилятор сгенерирует диагностическое сообщение).