Las matrices son una de las formas más simples de almacenamiento de datos estructurados. Dado que se asignan áreas de memoria indivisibles para almacenar matrices unidimensionales, y la mayoría de los lenguajes de programación tienen construcciones sintácticas para su declaración, se utilizan intensamente como búfer para transferir grandes cantidades de información a varias funciones (incluida la biblioteca). A su vez, las funciones a veces necesitan devolver una matriz.
Necesario
- - editor de texto;
- - Compilador y enlazador C o C ++.
Instrucciones
Paso 1
Devuelve datos de una función o método colocándolos en una matriz de longitud fija, asignados por el llamador y pasados por referencia. Defina el tipo de datos apropiado, por ejemplo: typedef int t_array10 [10]; Úselo en la declaración e implementación de la función o método requerido: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Llame apropiadamente: int aNumbers [10]; ReturnArray (aNumbers); La desventaja de este método es que la longitud de la matriz es fija.
Paso 2
Devuelve los datos de la matriz colocándolos en un búfer de salida asignado por el llamador que pasa por un puntero. El prototipo de una función o método puede contener un parámetro declarado en notación de matriz sin especificación de tamaño: void ReturnArray (int anArray , int nSize); o como un puntero: void ReturnArray (int * pnArray, int nSize); en ambos En los casos, el parámetro identificador se puede usar en notación de matriz: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // llamar int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Este método de pasar matrices a funciones y devolver datos de matrices se utiliza en la inmensa mayoría de los casos al desarrollar programas en C. Tenga en cuenta que Las funciones y métodos que aceptan y devuelven datos de esta manera, como regla, deben tener un parámetro adicional a través del cual se pasa el tamaño real del búfer.
Paso 3
Devuelve una matriz creada en una función o método. Formalmente, en este caso, no se debe devolver una matriz, sino un puntero a su primer elemento: int * ReturnArray () {int * pnArray = new int [10]; // trabajar con pnArray return pnArray;} // obtener un puntero al arreglo creado int * pnNumbers = ReturnArray (); // usar delete pnNumbers; // eliminar Este método tiene algunas limitaciones. Entonces, la matriz debe estar ubicada en el montón. Además, su eliminación debe realizarse con el método correspondiente a la creación (eliminar en el caso de utilizar new, free for malloc, etc.).
Paso 4
Utilice clases de contenedor para devolver matrices de forma conveniente al desarrollar programas en C ++. Un ejemplo de creación y devolución de una matriz que es un objeto de la clase de plantilla de vector de la biblioteca de plantillas estándar de C ++ especificada para int podría verse así: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Tenga en cuenta que la mayoría de los marcos populares proporcionan clases poderosas o plantillas de clases de matriz. A menudo implementan el concepto de intercambio de datos implícito con recuento de referencias y copia en escritura. Por lo tanto, la devolución por valor de dichos arreglos de funciones se realiza de manera muy eficiente y está asociada con un consumo mínimo de recursos informáticos.