Ah.. non la sapevo questa cosa! Comunque ora ho cambiato tutto con int e non mi va di ricambiare tutto nuovamente. Comunque, grazie per l'informazione!
Un'ultimissima cosa, premetto che il programma funziona:
allocazione.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "allocazione.h"
void allocazione_dinamica()
{
int a, b, a_piu_b, i, j, *A, *B, *U;
printf("a: "); scanf("%d", &a);
printf("b: "); scanf("%d", &b);
a_piu_b = a + b;
//Allocazione dinamica della memoria
A = (int *) malloc (a * sizeof(int));
B = (int *) malloc (b * sizeof(int));
//Caricamento dei vettori, modalità RANDOM
for(i = 0; i < a; i++)
A[i] = rand()%10;
for(j = 0; j < b; j++)
B[i] = rand()%10;
//Stampa dei vettori prima dell'unione
printf("Array prima di essere uniti: \n");
for(i = 0; i < a; i++)
printf("A[%d] = %d\n", i, A[i]);
printf("\n");
for(j = 0; j < b; j++)
printf("B[%d] = %d\n", j, B[j]);
//Invocazione della funzione unione
U = unione(A, a, B, b, &a_piu_b);
printf("Array unito: \n");
for(i = 0; i < a_piu_b; i++)
printf("U[%d] = %d\n", i, U[i]);
}
unione.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "unione.h"
int* unione(int A[], int nA, int B[], int nB, int* sizeResult)
{
int i, j, riempito = 0, *U; //array di unione
//Allocazione dinamica del vettore unione U
U = (int*) malloc (*sizeResult * sizeof(int));
//Caricamento del vettore
for(i = 0; i < nA; i++)
{
U[i] = A[i];
riempito++;
}
for(i = 0; i < nB; i++)
{
U[riempito] = B[i];
riempito++;
}
printf("\n");
return U;
}
Nonostante funzioni tutto correttamente, mi da questo warning:
allocazione.c:37:4: warning: assignment makes pointer from integer without a cast [enabled by default]
U = unione(A, a, B, b, &a_piu_b);