Resumen: Recorrido de Arrays con Punteros
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 11 de 63.
Desafío
FácilEscribe un programa en C que implemente una función para calcular la suma de todos los elementos en un arreglo de enteros utilizando aritmética de punteros y la equivalencia entre arreglos y punteros. Tu programa debe:
- Crear una función llamada
calculateSumque reciba dos parámetros:- Un puntero a un entero (
int *arr) que representa el arreglo - Un entero (
size) que representa el número de elementos en el arreglo
- Un puntero a un entero (
- Dentro de la función
calculateSum:- Inicializar una variable
sumen 0 - Crear una variable de tipo puntero
ptry establecerla para que apunte al inicio del arreglo - Usar un bucle para recorrer el arreglo utilizando aritmética de punteros
- En cada iteración, sumar el valor al que apunta
ptrasum - Incrementar el puntero para moverse al siguiente elemento
- Devolver la suma calculada
- Inicializar una variable
- En la función
main:- Leer un entero
nque representa el tamaño del arreglo - Declarar un arreglo de enteros de tamaño
n - Leer
nenteros de la entrada para llenar el arreglo - Llamar a la función
calculateSumcon el arreglo y su tamaño - Imprimir el resultado en el formato: "Sum: [value]"
- Leer un entero
La función debe usar aritmética de punteros para el recorrido del arreglo; no utilices la notación de indexación de arreglos como arr[i]. En su lugar, utiliza operaciones de desreferenciación de punteros e incrementos para acceder a los elementos del arreglo.
Por ejemplo, si la entrada es:
5
10 20 30 40 50Tu salida debería ser:
Sum: 150Este desafío pone a prueba tu comprensión de cómo las funciones pueden aceptar arreglos como parámetros de puntero, cómo usar la aritmética de punteros para recorrer arreglos de manera eficiente y cómo los nombres de los arreglos se convierten automáticamente en punteros cuando se pasan a las funciones.
Pruébalo tú mismo
#include <stdio.h>
// TODO: Escribe tu función calculateSum aquí
int main() {
int n;
scanf("%d", &n);
int arr[n];
// Leer los elementos del arreglo
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: Llamar a la función calculateSum y almacenar el resultado
// TODO: Imprimir el resultado en el formato "Sum: [value]"
return 0;
}Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas