Arrays y funciones
Parte de la sección Fundamentos del Journey de C++ de Coddy — lección 62 de 74.
Los arrays no se pueden pasar directamente a las funciones como arrays completos. Cuando intentas pasar un array a una función, este "decae" en un puntero a su primer elemento.
Por ejemplo:
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) no te dará el tamaño real del arreglo. arr es en realidad un puntero aquí, no un arreglo. Los punteros se aprenderán en el próximo curso.
Esta es la razón por la que, al pasar arreglos a funciones, normalmente necesitamos pasar el tamaño como un parámetro separado:
void processArray(int arr[], int size) {
// Ahora podemos trabajar de forma segura con el arreglo utilizando el parámetro de tamaño
}Aquí tienes cómo llamar a la función:
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Además, no es posible devolver un array en una función:
int[] processArray(int arr[]) {
return arr;
}Esto es ilegal. En su lugar, deberías usar la sintaxis *:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);La sintaxis de asterisco (*) se refiere a punteros que se discutirán en el próximo curso.
Hoja de referencia
Los arreglos no se pueden pasar directamente a las funciones; se "degradan" (decay) en punteros a su primer elemento.
Al pasar arreglos a funciones, es necesario pasar el tamaño como un parámetro separado:
void processArray(int arr[], int size) {
// Trabajar con el arreglo usando el parámetro size
}
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Los arreglos no se pueden devolver directamente desde las funciones. Use la sintaxis de punteros en su lugar:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador móduloIncremento/DecrementoPost-incremento/decrementoAtajos aritméticosOperadores de comparaciónComparación de strings7Conceptos básicos de Entrada/Salida
Sentencia coutSentencia cinEntrada de cadenasResumen - Hasta 120Resumen - Verdadero o Falso5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 38Calculadora de números
Mensaje de bienvenidaObtención de números3Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaResumen - Inicializar variablesType Casting Parte 1Type Casting Parte 26Toma de decisiones
Sentencia IfIf - ElseSentencia SwitchOperador condicionalRepaso - If ElseIf - Else anidados