In C können Funktionen Array-Typen nicht zurückgeben. Für Ihre Zwecke, möchten Sie einen Zeiger auf int
zurückzukehren:
int *function(int a)
{
int *var = malloc(sizeof *var * tags); // where is tags defined?
// are you sure you don't mean a here?
...
return var;
}
Dies wird ein Block des Speichers groß genug zuteilen tags
ganzzahlige Werte und weisen Sie die Adresse des ersten Elements des Blocks zu var
zu halten. Beachten Sie, dass var
ein Zeiger auf int
ist, kein Zeiger auf ein Array von int
. Dieser Zeiger wird von der Funktion zurückgegeben.
können Sie den Index verwenden oprerator auf einem Zeiger Ausdruck als ob es eine Reihe waren, etwa so:
int a = ...;
int *arr = function(a);
...
arr[0] = 0;
arr[1] = 1;
...
arr
ist ein Zeiger Ausdruck, kein Ausdruck Array, so sizeof arr
die Größe zurückkehren des Zeigertyps, nicht die Größe des Speicherblocks, auf den er zeigt (deshalb sollten Sie die Anzahl der Elemente, die Sie separat zugewiesen haben, im Auge behalten).
Hinweis auf C gute Praxis: Malloc-Anweisungen sollten sein 'T * var = malloc (sizeof (* var) * NUM); ', es gilt auch als gute Praxis für Speicher vom Anrufer zugewiesen werden, anstatt der Angerufenen . – Matt