Cómo devolver un array desde una función en C++
- Usar la manipulación de punteros para devolver un array al estilo C desde la función en C++
-
Usar el contenedor
vector
para devolver el array desde la función en C++

Este artículo introducirá cómo devolver un array de la función en C++.
Usar la manipulación de punteros para devolver un array al estilo C desde la función en C++
En C/C++, cuando se pasa la notación array[]
como parámetro de función, es sólo un puntero al primer elemento del array entregado. Por lo tanto, el prototipo de función que necesitamos construir es el que devuelve el puntero al tipo almacenado en el array; en nuestro caso es int
. Una vez que la función regrese, podemos acceder a sus elementos con una notación de array []
o desreferenciando el puntero mismo (tal vez hacer algo de aritmética del puntero como antes de esto).
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::string;
int *MultiplyArrayByTwo(int arr[], int size){
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
return arr;
}
int main(){
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ptr = MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << ptr[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Resultado:
array = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, ]
Observa que la función MultiplyArrayByTwo
podría implementarse como void
y podríamos acceder a los elementos modificados de la variable c_array
ya que apuntan a la misma dirección, como se muestra en el siguiente ejemplo:
#include <iostream>
using std::cout;
using std::cin;
using std::endl
using std::string;
void MultiplyArrayByTwo(int arr[], int size)
{
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
}
int main(){
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << c_array[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Usar el contenedor vector
para devolver el array desde la función en C++
En esta versión, almacenamos nuestro array en un contenedor vector
, que puede escalar dinámicamente sus elementos, así que no hay necesidad de pasar el parámetro size
.
Fíjate que devolvemos un objeto diferente de la función, así que no podemos usar cpp_array
para acceder a él. Necesitamos crear una nueva variable y asignarle el valor de retorno de la función. Entonces podemos iterar a través de ella y emitir el resultado.
#include <iostream>
#include <vector>
using std::cout;
using std::cin;
using std::endl
using std::string;
using std::vector;
vector<int> MultiplyArrayByTwo(const vector<int> *arr)
{
vector<int> tmp{};
for (const auto &item : *arr) {
tmp.push_back(item * 2);
}
return tmp;
}
int main(){
vector<int> cpp_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto cpp_array_2x = MultiplyArrayByTwo(&cpp_array);
cout << "array = [ ";
for (int i : cpp_array_2x) {
cout << i << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Artículo relacionado - C++ Function
- Manejar argumentos usando getopt en C++
- Funciones en línea en C++
- La diferencia entre argumentos y parámetros de funciones en C++
- Las diferencias entre las funciones virtuales puras y virtuales en C++
- Sobrecarga de funciones en C++
- Sobrecarga de funciones VS invalidación en C++
Artículo relacionado - C++ Array
- Array de Arrays en C++
- Comprobar si un array contiene un elemento en C++
- Bitarray en C++
- Array de entrada de usuario en función en C++
- La diferencia entre punteros y notaciones de arrays en C/C++
- Estructura de datos de array paralela en C++