Массивы как аргументы функций
Часть раздела 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}Задание
ЛегкоСоздайте функцию с именем sumArray, которая принимает два аргумента:
- Массив целых чисел (arr).
- Целое число (size), представляющее размер массива.
Функция должна вычислить и вернуть сумму всех элементов массива.
Затем в функции main:
- Считайте целое число n (размер массива).
- Считайте n целых чисел и сохраните их в массиве.
- Вызовите функцию sumArray с этим массивом.
- Выведите сумму в формате: "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;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
2Переменные
Типы данныхЦелые числаFloat и DoubleСимволыЛогический типКонстантыОсновы printfПравила именования переменныхПриведение типов. Часть 1Приведение типов. Часть 2Итоговое задание5Ввод и вывод
Спецификаторы форматаОсновы scanfПовторение: Задача №1Проверка вводаПовторение: Задача №28Массивы
Объявление массивовДоступ к элементамИзменение элементовМногомерные массивыПовторение: задание №1Массивы как аргументы функцийАлгоритмы работы с массивамиПовторение: задание №23Операторы
Арифметические операторыОператор остатка от деленияИнкремент и декрементОператоры присваиванияОператоры сравненияЛогические операторы. Часть 1Логические операторы. Часть 2Логические операторы. Часть 3Задание на повторение