Menu
Coddy logo textTech

Итоги: Обход массива через указатели

Часть раздела Logic & Flow путешествия по C на Coddy — урок 11 из 63.

challenge icon

Задание

Легко

Напишите программу на языке C, которая реализует функцию для вычисления суммы всех элементов целочисленного массива с использованием арифметики указателей и эквивалентности массивов и указателей. Ваша программа должна:

  1. Создать функцию с именем calculateSum, которая принимает два параметра:
    • Указатель на целое число (int *arr), представляющий массив
    • Целое число (size), представляющее количество элементов в массиве
  2. Внутри функции calculateSum:
    • Инициализировать переменную sum значением 0
    • Создать переменную-указатель ptr и установить её так, чтобы она указывала на начало массива
    • Использовать цикл для обхода массива с помощью арифметики указателей
    • На каждой итерации прибавлять значение, на которое указывает ptr, к sum
    • Инкрементировать указатель для перехода к следующему элементу
    • Вернуть вычисленную сумму
  3. В функции main:
    • Считать целое число n, представляющее размер массива
    • Объявить целочисленный массив размера n
    • Считать n целых чисел из входных данных для заполнения массива
    • Вызвать функцию calculateSum, передав ей массив и его размер
    • Вывести результат в формате: "Sum: [value]"

Функция должна использовать арифметику указателей для обхода массива — не используйте индексацию массива вида arr[i]. Вместо этого используйте разыменование указателя и операции инкремента для доступа к элементам массива.

Например, если входные данные:

5
10 20 30 40 50

Ваш вывод должен быть:

Sum: 150

Эта задача проверяет ваше понимание того, как функции могут принимать массивы в качестве параметров-указателей, как использовать арифметику указателей для эффективного обхода массивов и как имена массивов автоматически преобразуются в указатели при передаче в функции.

Попробуйте сами

#include <stdio.h>

// TODO: Напишите здесь вашу функцию calculateSum

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    
    // Чтение элементов массива
    for(int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // TODO: Вызовите функцию calculateSum и сохраните результат
    
    // TODO: Выведите результат в формате "Sum: [value]"
    
    return 0;
}

Все уроки раздела Logic & Flow