Параметр к программе - 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*).