Ich brauche meine Funktion, um ein Array zurückzugeben, das dann in die nächste Funktion gehen wird. Ich weiß aufgrund einiger Forschung, dass ich einen Zeiger verwenden muss, um dies zu erledigen. aber wenn ich diesen Code ausführe, bekomme ich Speicheradressen oder was mir Speicheradressen erscheinen (wenn es nicht die Adresse ist, ist eine riesige Zahl) in meinen Ergebnissen.Funktionen, die Arrays zurückgeben
Das Problem tritt auf, wenn das Array Funktionen ändern muss. Die beiden einzelnen Funktionen laufen dort wie gewünscht gut.
Hier ist mein Code:
int main(void)
{
int y = 0, x[10];
int *p;
y = capturingNumberTimesLoopRuns();
p = PopulateArray(y);
searchArray(x);
}
int capturingNumberTimesLoopRuns (void)
{
int y = 0;
while (y == 0)
{
printf("Please enter the quantity of numbers you wish to enter.\n");
printf("Enter a number between 1 and 10: ");
scanf("%d", &y);
if (y < 1 || y > 10)
{
printf("Invalid Selection! Please Try Again.\n");
y = 0;
}
}
return y;
}
int * PopulateArray(int y)
{
int i;
int x[10];
int a = 1;
for (i = 0; i < y; i++)
{
printf("Please enter number %d: ", a);
scanf("%d", &x[i]);
a++;
}
return x;
}
void searchArray(int x[])
{
int i, a = 0, numberOfTimes = 0, average = 0;
for (i = 0; x[i] != 0; i++)
{
if (x[i] % 3 == 0)
{
a += x[i];
numberOfTimes += 1;
}
}
average = a/numberOfTimes;
printf("%d\n", a);
printf("average = %d", average);
}
Sie können die Adresse einer Variablen mit automatischem Speicher in einer Funktion nicht zurückgeben, da dieser Speicher bei der Rückkehr aus der Funktion nicht mehr zugewiesen wird. Sie haben zwei Möglichkeiten: (1) Übergeben Sie die Array-Adresse als Argument an die Funktion, oder (2) Lassen Sie die Funktion den Speicher mit 'malloc' belegen und überlässt sie dem Aufrufer, um sie später freizugeben. –
Sie können kein Array in C zurückgeben. – immibis