Параметр к программе - C (СИ)
Формулировка задачи:
Здравствуйте!
Изучая двумерные массивы, наткнулся на такую задачу: " На вход программе подается двумерный массив n*n, где n<100 и подается как параметр к программе ... ".
Отсюда возник вопрос, что это за "параметр к программе"?
Как я понял, это аргумент для функции main. То есть это должно выглядеть примерно так:
Или я ошибаюсь? Объясните, пожалуйста.
void main(int argc, char * argv[], int * mas[]) { int n, i, j; printf("Input n = "); scanf("%d", &n); mas = malloc(n*sizeof(int)); for(i=0; i<n; i++) { *(mas+i)=(int*)malloc(n*sizeof(int)); }
Решение задачи: «Параметр к программе»
textual
Листинг программы
void main(int argc, char * argv[]) { int n, i, j; printf("Input n = "); scanf("%d", &n); argv = realloc(argv, (n+1)*sizeof(char*)); for(i=1; i<=n; i++) { *(argv+i)=(char*)malloc(n*sizeof(int)); }
Объяснение кода листинга программы
В данном коде:
- Объявлены три переменные: n, i, j типа int и одна переменная argv типа char*.
- Выводится сообщение
Input n =
и считывается значение переменной n с помощью функции scanf. - Аргумент argv изменяется с помощью функции realloc, чтобы выделить память под массив строк (char*) размером n+1.
- В цикле for создаются n строк (char*) с помощью функции malloc и записываются в argv.
Код выполняет следующие действия:
- Считывает значение переменной n.
- Изменяет размер массива argv с помощью функции realloc.
- Создает n строк (char*) с помощью функции malloc и записывает их в argv. Но, следует отметить, что данный код имеет некоторые проблемы:
- Не освобождается память, выделенная под строки с помощью функции malloc, если они не будут использованы.
- Не проверяется, достаточно ли памяти выделено под массив argv и достаточно ли памяти для создания новых строк (char*).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д