Sie können ein Array von einer Funktion in C mithilfe von Zeigern zurückgeben. 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. Anschließend können Sie einen Zeiger auf das zugewiesene Array zurückgeben.
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 Sie können dann den zurückgegebenen Zeiger verwenden, um auf das Array zuzugreifen.
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 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.
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 Dies wird auch Folgendes ausgeben:
1 3 3 8 4 1 3 4 3 0
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3