Возврат массива из функции Си
Необходимо реверснуть массив (функция revers), но при попытке компиляции пишет:
main.c:39:16: error: cannot convert 'int (*)[12]' to 'int*' for argument '1' to 'void revers(int*)'
revers(&bin);
Что я делаю не так?
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void revers(int *bin)
{
int temp, i;
for (i = 0; i < 12 / 2; i++)
{
temp = bin[i];
bin[i] = bin[12 - i - 1];
bin[12 - i - 1] = temp;
}
}
int *binary_system(int number)
{
int bin[12];
for (int i = 0; i < 12; i++)
{
bin[i] = 0;
}
int i = 0;
while (number != 0)
{
if (number % 2 == 0)
{
bin[i] = 0;
number /= 2;
}
else
{
bin[i] = 1;
number /= 2;
}
i++;
}
revers(&bin);
return bin;
}
void calculate_the_maximum(int n, int k)
{
int *nbin, *kbin;
nbin = binary_system(n);
kbin = binary_system(k);
}
int main()
{
int n, k;
scanf("%d %d", &n, &k);
calculate_the_maximum(n, k);
return 0;
}
Ответы (1 шт):
Автор решения: DSuhoi
→ Ссылка
Можно пойти на риск и в короткой программе выделять память в функциях динамически, возвращая указатель на выделенную область (Пример программы):
//int bin[12];
int *bin = (int*) malloc(12*sizeof(int));
Главное - следить за выделенной памятью и не допускать её переполнения.