In >C< geht das bspw. so, ABER der Aufrufer ist dann dafür verantwortlich, dass wieder aufgeräumt wird (insofern kein Array übergeben wurd):
#include <stdio.h>
#include <stdlib.h>
char *getchararray(int n)
{
char *a = malloc(n);
if (!a)
{
return NULL;
}
return a;
}
int32_t *getintarray(int n)
{
int32_t *a = malloc(sizeof(int32_t) * n);
if (!a)
{
return NULL;
}
return a;
}
int main()
{
char *a = getchararray(15);
int32_t *b = getintarray(15);
char c = 1;
size_t i = 0;
if (!a)
{
free(a);
c = 0;
}
if (!b)
{
free(b);
c = 0;
}
if (c)
{
a[2] = 2;
b[2] = 22222;
for (i = 0; i < 15; i++)
{
printf("%d %d\n", a[i], b[i]);
}
}
return 0;
}
Und in >C++< ist das ganze sehr viel „komfortabler“…
Siehe auch https://stackoverflow.com/questions/11656532/returning-an-array-using-c