Menu
Coddy logo textTech

Массивы как аргументы функций

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

Массивы могут передаваться в качестве аргументов функциям в языке C. Когда массив передается в функцию, на самом деле передается адрес памяти первого элемента.

Объявите массив и функцию, которая принимает его в качестве аргумента:

void displayArray(int arr[], int size) {
    for(int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

Создайте массив и вызовите функцию:

int numbers[5] = {10, 20, 30, 40, 50};
displayArray(numbers, 5);

Когда вы передаете массив в функцию, изменения, внесенные в массив внутри функции, повлияют на исходный массив:

void doubleValues(int arr[], int size) {
    for(int i = 0; i < size; i++) {
        arr[i] = arr[i] * 2;
    }
}

// Вызов функции
doubleValues(numbers, 5);
// Теперь numbers содержит: {20, 40, 60, 80, 100}
challenge icon

Задание

Легко

Создайте функцию с именем sumArray, которая принимает два аргумента:

  • Массив целых чисел (arr).
  • Целое число (size), представляющее размер массива.

Функция должна вычислить и вернуть сумму всех элементов массива.

Затем в функции main:

  1. Считайте целое число n (размер массива).
  2. Считайте n целых чисел и сохраните их в массиве.
  3. Вызовите функцию sumArray с этим массивом.
  4. Выведите сумму в формате: "Sum: X" (где X — это сумма).

Шпаргалка

Массивы передаются в функции по ссылке (адрес памяти первого элемента):

void displayArray(int arr[], int size) {
    for(int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

Вызовите функцию, указав имя массива и его размер:

int numbers[5] = {10, 20, 30, 40, 50};
displayArray(numbers, 5);

Изменения, внесенные в массив внутри функции, влияют на исходный массив:

void doubleValues(int arr[], int size) {
    for(int i = 0; i < size; i++) {
        arr[i] = arr[i] * 2;
    }
}

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

#include <stdio.h>

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

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    for(int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // Вызовите функцию sumArray и выведите результат
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Fundamentals