Возврат массива из функции Си

Необходимо реверснуть массив (функция 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));

Главное - следить за выделенной памятью и не допускать её переполнения.

→ Ссылка