Puede devolver una matriz desde una función en C usando punteros. Sin embargo, esto puede generar problemas si la matriz no está asignada correctamente.
En su ejemplo, está intentando devolver una matriz que está asignada en la pila. Esto puede causar un comportamiento indefinido cuando la función regresa.
Para evitar este problema, puede asignar la matriz en el montón usando el nuevo operador. Luego puede devolver un puntero a la matriz asignada.
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 Luego puede usar el puntero devuelto para acceder a la matriz.
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 Esto generará:
1 3 3 8 4 1 3 4 3 0
Otra alternativa es usar una estructura para envolver la matriz. Esto se puede devolver por valor y la estructura se copiará, incluida la matriz interna que contiene.
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 Esto también generará:
1 3 3 8 4 1 3 4 3 0
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3