Sie können ein Array von einer Funktion in C zurückgeben, indem Sie Zeiger verwenden. Dies kann jedoch zu Problemen führen, wenn das Array nicht ordnungsgemäß zugewiesen ist.
In Ihrem Beispiel versuchen Sie, ein Array zurückzugeben, das auf dem Stapel zugewiesen ist. Dies kann zu undefiniertem Verhalten führen, wenn die Funktion zurückkehrt.
Um dieses Problem zu vermeiden, können Sie das Array mit dem neuen Operator auf dem Heap zuweisen. Sie können dann einen Zeiger auf das zugewiesene Array zurückgeben.
<code class="C++">int* uni(int *a, int *b) { int *c = new int[10]; int i = 0; while (a[i] != -1) { c[i] = a[i]; i++; } for (; i < 10; i++) { c[i] = b[i - 5]; } return c; }</code>
Sie können dann den zurückgegebenen Zeiger verwenden, um auf das Array zuzugreifen.
<code class="C++">int main() { int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1}; int b[5] = {1, 3, 4, 3, 0}; int *c = uni(a, b); for (int i = 0; i < 10; i++) { cout << c[i] << " "; } cout << "\n"; delete[] c; return 0; }</code>
Dies wird Folgendes ausgeben:
1 3 3 8 4 1 3 4 3 0
Eine andere Alternative besteht darin, eine Struktur zum Umschließen des Arrays zu verwenden. Dies kann als Wert zurückgegeben werden, und die Struktur wird kopiert, einschließlich des darin enthaltenen Arrays.
<code class="C++">struct myArray { int array[10]; }; myArray uni(int *a, int *b) { myArray c; int i = 0; while (a[i] != -1) { c.array[i] = a[i]; i++; } for (; i < 10; i++) { c.array[i] = b[i - 5]; } return c; } int main() { int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1}; int b[5] = {1, 3, 4, 3, 0}; myArray c = uni(a, b); for (int i = 0; i < 10; i++) { cout << c.array[i] << " "; } cout << "\n"; return 0; }</code>
Dies gibt außerdem Folgendes aus:
1 3 3 8 4 1 3 4 3 0
Das obige ist der detaillierte Inhalt vonWie gebe ich ein Array von einer Funktion in C zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!