- •Базовые понятия информатики. Понятие «Информатика» и «Информация»
- •Информация
- •Информационные технологии
- •Понятие алгоритма. Свойства и классы алгоритмов. Формы представления алгоритмов
- •Понятие алгоритма. Базовые алгоритмические структуры
- •Представление данных в памяти персонального компьютера.
- •Принципы обработки программных кодов
- •Компиляторы
- •Интерпретатор
- •Язык с. История развития. Основные свойства языка
- •Отличительные особенности языкаC
- •Элементы языка c
- •Константы
- •Базовые типы данных
- •Директива #include
- •Использование void
- •Инструкция return
- •Описание переменных
- •Обработка данных. Операторы
- •Арифметические операторы
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Аккумуляторы
- •Преобразования типов данных
- •Декларации и дефиниции функций
- •Формальные и фактические параметры. Вызов функций
- •Возврат функцией значений
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Значения параметров по умолчанию
- •Перегрузка функций
- •Рекурсия
- •Встроенные функции
- •Обработка символьных данных
- •Функция puts()
- •Функция putchar()
- •Функция printf()
- •Выбор правильных средств вывода информации
- •Функция gets()
- •Функция getchar()
- •Функция scanf()
- •Выбор соответствующих средств ввода данных
- •Управляющие структуры Структуры выбора (if / else)
- •Структуры выбора (switch/case/default)
- •Структуры повторения (циклы)
- •Использование цикла for
- •Использование цикла do...While (постусловие)
- •Использование цикла while (предусловие)
- •Операторы передачи управления Оператор безусловного перехода goto
- •Оператор break
- •Оператор continue
- •Препроцессор языка Си
- •Массивы Объявление переменной массива
- •Использование индексной переменной
- •Инициализация массива при объявлении
- •Передача массивов в функции
- •Использование констант при объявлении массивов
- •Символьные строки
- •Массивы строк
- •Алгоритмы сортировки массива
- •Поиск заданного элемента в массиве
- •Указатели
- •Объявление указателя
- •Указатели на массивы
- •Операции над указателями
- •Указатели на строку
- •Указатели на функцию
- •Функции, возвращающие указатель
- •Указатели на многомерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Структуры данных
- •Реализация одних структур на базе других
- •Очередь
- •Операции над очередями
- •Операции над стеками
- •Ссылочные реализации структур данных
- •Операции над списками
Передача массивов в функции
Ваши программы будут передавать массивы в функции точно так же, как и любые другие переменные. Функция может инициализировать массив, прибавить к массиву значения или вывести элементы массива на экран.
Когда вы передаете массив в функцию, вы должны указать тип массива. Нет необходимости указывать размер массива. Вместо этого вы передаете параметр, например number_of_elements, который содержит количество элементов в массиве:
void some_function(int array[], int number_of_elements);
Следующая программа передает массивы в функцию show_array, которая использует цикл for для вывода значений массивов:
#include <iostream.h>
void show_array (int array [] , int number_of_elements)
{ int i; for (i = 0; i < number_of_elements; i++) cout << array[i] << ' '; cout << endl; }
void main(void)
{ int little_numbers[5] ={1,2,3,4,5}; int big_numbers[3] = { 1000, 2000, 3000 }; show_array(little_numbers, 5); show_array(big_numbers, 3); }
Как видите, программа просто передает массив в функцию по имени, а также указывает параметр, который сообщает функции количество элементов, содержащихся в массиве:
show_array(little_numbers, 5);
Следующая программа GETARRAY.CPP использует функцию get_values, чтобы присвоить три значения массиву numbers:
#include <iostream.h>
void get_values(int array[], int number_of_elements)
{ int i; for (i = 0; i < number_of_elements; i++)
{ cout “ "Введите значение " << i << ": "; cin ” array [i]; } }
void main(void)
{ int numbers[3]; get_values(numbers, 3); cout << "Значения массива" << endl; for (int i = 0; i < 3; i++) cout << numbers [i] << endl; }
Как видите, программа передает массив в функцию по имени. Функция в свою очередь присваивает массиву элементы.
Функция sizeof
Оператор sizeof определяет размер памяти, выделяемый под переменную определенного типа. С его помощью можно также определять объем памяти, выделяемый под массив или какой-либо из его элементов.
#include <iostream.h>
void main()
{
cout<<”\nsizeof(char) =”<<sizeof(char);
cout<<”\nsizeof(short) =”<<sizeof(short); //короткое целое
cout<<”\nsizeof(int) =”<<sizeof(int);
cout<<”\nsizeof(long) =”<<sizeof(long);
cout<<”\nsizeof(float) =”<<sizeof(float);
cout<<”\nsizeof(doble) =”<<sizeof(double); //вещест двойной точности
cout<<”\nsizeof(long double) =”<<sizeof(long double);
cout<<”\n”;
double a[] = {1.35, 6.12, -.6389, 41.4};
int b = sizeof(a);
int с = sizeof(a[0]);
int n=b/c; //размер массива
cout<<”Total memory = ”<<b;
cout<<”\nMemory to first arrays member =”<<c;
cout<<”\nArray’s size =”<<n;
}
Результат:
sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
sizeof(long) = 4
sizeof(float) = 4
sizeof(doble) = 8
sizeof(long double) = 8
Total memory = 32
Memory to first arrays member = 8
Array’s size = 4
Использование констант при объявлении массивов
При работе с массивами необходимо указать размер массива.
Предположим, мы хотим изменить программу, увеличив размер массива до 10 значений; в этом случае нам придется изменить не только объявление массива, но и границу цикла for. Альтернативой этому является объявление массива с использованием константы.
#include <stdio.h>
#define ARRAY_SIZE 5
void main(void)
{
int values[AKKAY_SIZE] = (80, 70, 90, 85, 80};
int i;
for (i = 0; i < ARRAY_SIZE; i++)
printf("values[%d] %d\n", i, values[i]);
}
Теперь, если понадобится изменить размер массива, можно просто изменить значение константы ARRA Y_SIZE; в этом случае автоматически изменится как верхняя граница цикла обработки массива, так и размер самого массива.