я могу написатьКак объявить параметр постоянного массива в C?
#include <stdio.h>
int main(const int argc, const char * const * const argv) {
argv = NULL;
printf("Hello, world\n");
return 0;
}
И это не потому, что компилировать argv
является Const (что хорошо).
Однако документ, который я прочитал, предложил char * argv[argc + 1]
как лучший способ объявить argv. Но как я могу это сделать, чтобы этот стиль объявления делал argv сам const?
#include <stdio.h>
int main(const int argc, const char * const const argv[argc + 1]) {
argv = NULL;
printf("Hello, world\n");
return 0;
}
Это компилируется, но мне бы очень понравилось.
'Как я могу сделать так, чтобы этот стиль объявления создавал argv сам const?' Вы не должны этого делать. 'argv' не const. – Matt
@Matt 'argv' является аргументом указателя на' main'. Нет причин, по которым он не может быть объявлен 'const', если' main' его не изменяет. В этом весь смысл вопроса ОП. –
'argv' как указатель не обязательно должен быть' const', а массив определяется стандартом, чтобы не быть 'const' квалифицированным. См. 5.1.2.2.1p2 – Olaf