- •Введение
- •Блок-схема алгоритма
- •Общие требования к блок-схеме алгоритма
- •Линейные и разветвляющиеся процессы
- •Циклические процессы
- •Итерационные процессы
- •Основные понятия языка С(С++)
- •Комментарии
- •Типы данных
- •Данные целого типа
- •Данные вещественного типа
- •Модификатор const
- •Переменные перечисляемого типа
- •Константы
- •Структура программы на языке С(С++)
- •Операции и выражения
- •sizeof
- •Операция присваивания
- •Арифметические операции
- •Операции поразрядной арифметики
- •Логические операции
- •Операции отношения
- •Инкрементные и декрементные операции
- •Операция sizeof
- •Порядок выполнения операций
- •Приоритет операций
- •Преобразование типов
- •Операция приведения
- •Операция запятая
- •Ввод и вывод информации
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Операторы языка С(С++)
- •Понятие пустого и составного операторов
- •Операторы организации цикла
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла do … while
- •Вложенные циклы
- •Примеры программ
- •Массивы
- •Одномерные массивы
- •Примеры программ
- •Многомерные массивы (матрицы)
- •Примеры программ
- •Указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Связь между указателями и массивами
- •Массивы указателей
- •Многоуровневые указатели
- •Примеры программ
- •Символьные строки
- •Ввод/вывод строк.
- •Функции работы со строками.
- •Примеры программ
- •Функции
- •Прототип функции.
- •Определение функции.
- •Параметры функции
- •Передача массива в функцию
- •inline функции
- •Класс памяти
- •Автоматические переменные
- •Статические переменные
- •Регистровые переменные
- •Блочная структура
- •Примеры программ
- •Указатели на функции
- •Примеры программ
- •Рекурсия
- •Примеры программ
- •Аргументы в командной строке
- •Функции с переменным числом параметров
- •Вершина стека
- •Примеры программ
- •Сортировка
- •Пузырьковая сортировка.
- •Шейкер сортировка
- •Сортировка вставкой
- •Сортировка выбором
- •Метод Шелла
- •Метод Хора
- •Структуры
- •Указатели на структуры.
- •Структуры и функции
- •Примеры программ
- •Поля бит
- •Объединения
- •Переменные с изменяемой структурой
- •Организация списков и их обработка
- •Операции со списками при связном хранении
- •Стек
- •Построение обратной польской записи
- •Односвязный линейный список, очередь
- •Двусвязный линейный список
- •Циклический список, кольцо
- •Двусвязный циклический список
- •Примеры программ
- •Деревья
- •Файлы
- •Примеры программ
- •Литература
декларируют, что объекты i (переменная) и mas (массив), имеющие тип int и float, не создаются, а память им выделяется при их объявлении в другой функции.
Для всего множества функций, образующих программу, должно быть не более одного определения каждой из внешних переменных. В объявлении массивов необходимо указывать их размерность, однако при декларировании массива с extern это не требуется.
Передача массива в функцию
Если в качестве передаваемого аргумента используется массив, то в функцию передается указатель на массив. При вызове функции в списке аргументов записывается имя массива являющееся адресом первого.
Можно использовать три варианта описания массива, в качестве формального параметра функции.
1. Параметр в функции может быть объявлен как массив соответствующего типа с указанием его размера.
#include <stdio.h> |
|
int max(int ms[10]) |
// прототип функции fun |
{int k=ms[0];
for(int i=1; i<10; i++) if(k<ms[i]) k=ms[i];
return k;
}
main()
{int mas[3][4], i, j; for(i=0; i<3; i++)
{for(j=0; j<4; j++) scanf( ”%d”&mas[i][j]);
printf(“\nмаксимальное значение в строке %d =%d”, i,fun(mas[i]));
}
}
В этом случае выполняется преобразование mas[i] к указателю на целый тип, и в функцию передается адрес mas[i][0]. В функции находится максимальное значение каждой строки и выводится на экран.
2. Массив в качестве параметра в функции может быть объявлен без указания его размера. Так как сам массив в стек не копируется, то размер массив в общем случае компилятору не требуется.
int max(int ms[]) // прототип функции fun { // тело функции аналогично опмсанному выше
}
3. Наиболее распространенный способ – объявление параметра-массива указателем на соответствующий тип данных. Функцию можно описать следующим образом:
int max(int *ms)
{ // тело функции аналогично опмсанному выше
}