Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Определение функций
Рассмотрим определение функции на примере функции sum.
В языках C и C++, функции не должны быть определены до момента их использования, но они должны быть ранее объявлены. Но даже после всего этого, в конце концов, эта функция должна быть определена. После этого прототип функции и ее определение связываются, и эта функция может быть использована. Если функция ранее была объявлена, она должна быть определена с тем же возвращаемым значением и типами данных, в противном случае, будет создана новая, перегруженная функция. Заметьте, что имена параметров функции не должны быть одинаковыми. |
// объявление функции суммирования
int sum(int, int);
// определение функции суммирования
int sum(int num1, int num2)
{
return (num1 + num2);
}
23. Си. Функции: формальные и фактические параметры
Параметр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
Важно различать:
формальный параметр — аргумент, указываемый при объявлении или определении функции.
фактический параметр — аргумент, передаваемый в функцию при ее вызове;
Пример на языке Си:
// Описание функции. int a - формальный параметр, имя параметра может отсутствовать.
int myfunction(int a);
// Определение функции. int b - формальный параметр, имя параметра может не совпадать с указанным при объявлении функции.
int myfunction(int b)
{
return 0;
}
int main()
{
int c=0;
myfunction(c); // Вызов функции. c - фактический параметр.
return 0;
}
24. Си. Функции: области видимости имен
В программировании, область видимости (англ. scope) обозначает область программы, в пределах которой идентификатор (имя) некоторой переменной продолжает быть связанным с этой переменной и возвращать её значение. За пределами области видимости тот же самый идентификатор может быть связан с другой переменной, либо быть свободным (не связанным ни с какой из них).
В большинстве языков программирования область видимости переменной определяется местом её объявления. Кроме того, область видимости может задаваться явно с помощью классов памяти или пространств имён.
В языках, поддерживающих структурное программирование, переменные обычно разделяются на два типа по области видимости:
локальные переменные — объявляются внутри функции и недоступны снаружи неё;
глобальные переменные — объявляются вне всех функций и доступны отовсюду
В объектно-ориентированном программировании каждый объект содержит три специфические области видимости:
Закрытая (англ. private) — переменную можно использовать только в реализации объекта;
Общедоступная (англ. public) — переменную можно использовать при использовании и инициализации объекта;
Защищённая (англ. protected) — переменную можно использовать только в реализации объекта или его потомка.
Области видимости определяются и для языков разметки. Например, в HTML областью видимости имени элемента управления является форма (HTML) от < form> до < /form>.
Пример в СИ:
// Начинается глобальная область видимости.
int countOfUser = 0;
int main()
{
// С этого момента объявляется новая область видимости, в которой видна глобальная.
int userNumber[10];
}
#include < stdio.h>
int a = 0; // глобальная переменная
int main()
{
printf(" %d", a); // будет выведено число 0
{
int a = 1; // объявлена локальная переменная а, глобальная переменная a не видна
printf(" %d", a); // будет выведено число 1
{
int a = 2; // еще локальная переменная в блоке, глобальная переменная a не видна, не видна и предыдущая локальная переменная
printf(" %d", a); // будет выведено число 2
}
}
25. Си. Массивы: объявление массивов
Массив – это совокупность данных, которая обладает следующими свойствами: все элементы массива имеют один и тот же тип; массив имеет одно имя для всех элементов; доступ к конкретному элементу массива осуществляется по индексу (индексам).
1. Объявление массива
Объявление массива имеет следующий синтаксис:
< спецификация типа> < имя> [< константное выражение> ];
< спецификация типа> < имя> [ ];
Здесь квадратные скобки являются элементом синтаксиса, а не признаком необязательности конструкции.
Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за именем, – признак того, что переменная является массивом. Константное выражение, заключенное в квадратные скобки определяет число элементов в массиве. Индексация элементов массива в языке C++ начинается с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива.
Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована, если в объявлении массива присутствует инициализатор, либо массив объявляется как формальный параметр функции, либо данное объявление является ссылкой на объявление массива где-то в другом месте программы. Однако для многомерного массива может быть опущена только первая размерность.
Многомерный массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за именем:
< спецификация типа> < имя> [< константное выражение> ][< константное выражение> ]...;
Каждое константное выражение определяет количество элементов в данном измерении массива, поэтому объявление двумерного массива содержит два константных выражение, трехмерного – три и т.д.
Массив может состоять из элементов любого типа, кроме типа void и функций, т.е. элементы массива могут иметь базовый, перечислимый, структурный тип, быть объединением, указателем или массивом.
Примеры объявлений массивов:
int x[10]; | // Одномерный массив из 10 целых чисел. Индексы меняются от 0 до 9. |
double y[2][10]; | // Двумерный массив вещественных чисел из 2 строк и 10 столбцов. |