Vous pouvez renvoyer un tableau à partir d'une fonction en C en utilisant des pointeurs. Cependant, cela peut entraîner des problèmes si le tableau n'est pas correctement alloué.
Dans votre exemple, vous essayez de renvoyer un tableau alloué sur la pile. Cela peut provoquer un comportement indéfini lors du retour de la fonction.
Pour éviter ce problème, vous pouvez allouer le tableau sur le tas à l'aide de l'opérateur new. Vous pouvez ensuite renvoyer un pointeur vers le tableau alloué.
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 Vous pouvez ensuite utiliser le pointeur renvoyé pour accéder au tableau.
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 Cela affichera :
1 3 3 8 4 1 3 4 3 0
Une autre alternative consiste à utiliser une structure pour envelopper le tableau. Ceci peut être renvoyé par valeur, et la structure sera copiée, y compris le tableau qui y est interne.
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 Cela affichera également :
1 3 3 8 4 1 3 4 3 0
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3