Массив novi
в вашем коде имеет длительность автоматического хранения и без связи . Он не "статически распределен". Это массив переменной длины , поскольку его длина была определена во время выполнения.
Длина массива с статической продолжительностью хранения определяется во время компиляции и не можетизменяться во время выполнения.
Единственное, что не так с вашим кодом, это то, что он не проверяет количество аргументов командной строки, поэтому argv[1]
может быть нулевым указателем [*], а strlen(argv[1]);
будетзатем вызвать неопределенное поведение .
[*] Технически, argv[1]
может быть даже за пределами массива argv
. Существуют только элементы до argv[argc]
, причем argv[argc]
является нулевым указателем. Возможно, хотя и маловероятно, что argc
может быть 0, хотя большая часть кода предполагает argc > 0
.