Как инициализировать динамический массив в отдельной функции? - C (СИ)
Формулировка задачи:
Здравствуйте, хочу инициализировать три динамических массива отдельной функцией.
Сама функция.
Желательно бы там же инициализировать и эту строку.
Функция не работает, не могу разобраться как передавать, где нужны указатели или указатели на указатели.
В main() инициализировать могу, но выглядит не красиво, а в отдельную функцию вывести знаний не хватает.
Если есть какая-то статья про передаваемые значения в функции, дайте ссылку, пожалуйста. То, что нашел сам, в продвижении вопроса не помогло
Но она возвращает указатель на указатель на массив, как переделать под себя без возврата этого всего не представляю
int main(int argc, char* argv[]){ ushort *big1=0, *big2=0, *res=0; ushort lenBig1 = strlen(argv[1]) - 2, lenBig2 = strlen(argv[2]) - 2; InitMas(big1, big2, res, lenBig1, lenBig2, argv); return 0; }
void InitMas(ushort* big1, ushort* big2, ushort* res, ushort lenBig1, ushort lenBig2,char **argv){ big1 = (ushort*)calloc(lenBig1, sizeof(ushort)); big2 = (ushort*)calloc(lenBig2, sizeof(ushort)); res = (ushort*)calloc(max(lenBig1, lenBig2) + 1, sizeof(ushort)); }
lenBig1 = strlen(argv[1]) - 2; lenBig2 = strlen(argv[2]) - 2;
Знаю, что можно проинициализировать один массив отдельной функцией типа
int ** alloc_array( size_t n, size_t m ) { int **p; ... return p; }
Решение задачи: «Как инициализировать динамический массив в отдельной функции?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int *alloc_array(size_t sz){ return (int*)calloc(sz, sizeof(int)); } void big_big_init(int**arr, int **arr2, size_t sz, size_t sz2){ *arr=alloc_array(sz); *arr2=alloc_array(sz2); } int main(){ int *a, *b; big_big_init(&a, &b, 10,20); return 0; }
Объяснение кода листинга программы
- #include
Включает в себя файл стандартного ввода/вывода, который необходим для работы с функциями отправки сообщений в консоль. - #include
Включает в себя файл стандартных функций, которые используются для работы с памятью, в том числе и для выделения и освобождения памяти. - *int alloc_array(size_t sz){** Эта функция выделяет динамический массив указанного размера и возвращает его адрес.
- void big_big_init(intarr, int arr2, size_t sz, size_t sz2){ Эта функция инициализирует два динамических массива заданного размера.
- int main(){ Это точка входа в программу, с которой начинается выполнение любой программы на C.
- int a, b; Объявляются две указательные переменные на int, которые будут использоваться для хранения адресов динамических массивов.
- big_big_init(&a, &b, 10,20); Вызывается функция big_big_init, которая инициализирует динамические массивы a и b размером 10 и 20 соответственно.
- return 0; Возвращает 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д