Функция return для динамических массивов. - C (СИ)
Формулировка задачи:
Подскажите пожалуйста, как вызвать значения динамического массива из одной функции в главную?
Т.е. в функции main() вводится одномерный массив, затем значения массива передаются в другую функцию, там происходит их преобразование (не суть какое) и полученные значения снова возвращаются в функцию main(). На экране должен отображаться ряд значений...
Решение задачи: «Функция return для динамических массивов.»
textual
Листинг программы
double* lol(double *A, int n)
{
int i;
double *U,t;
U=(double*)malloc(n*sizeof(double));
for(i=0;i<n;i++)
U[i]=rand();
for(i=0;i<n;i++)
{
A[i*n+i] = U[i];
}
return U;
}
int main()
{
double *A, *B;
int n;
int i, j;
A=(double*)malloc((n*n)*sizeof(double));
printf("Введите размер матрицы А:\nn = ");
scanf("%d", &n);
printf("Введите элементы матрицы А:");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\nA[%d][%d] = ", i,j);
scanf("%lf", &A[i*n + j])
}
}
// B=(double*)malloc(n*sizeof(double));
B=lol(A, n);
return 0;
}
Объяснение кода листинга программы
- В функции lol() используется динамический массив (double *U), который выделяется с помощью функции malloc().
- В цикле for заполняются значениями динамического массива U.
- В цикле for элементы динамического массива U присваиваются элементам матрицы А.
- В функции main() используется динамический массив (double *A), который выделяется с помощью функции malloc().
- С помощью функции scanf() пользователь вводит размер матрицы А и её элементы.
- Вызывается функция lol(), в которую передаются матрица А и её размер.
- В функции lol() возвращается динамический массив U.
- В функции main() возвращается 0, завершая работу программы.