Использование указателей и ссылок с ключевым словом const
Некоторые конструкции языка C++ являются источником путаницы. Одной из таких конструкций является использование ключевого слова const с указателями и ссылками. Следующие примеры помогут вам прояснить ситуацию.
// Объявление данных
int number;
const int count=0;
// Указатель является константой
int* const nl=unumber;
// Указатель указывает на константу
// (указываемое значение есть const)
const int* n2=&count;
// И указатель, и указываемое значение
// являются константами
const int* const n3=&count;
// Указатели на строки
// строка является константной
const char* strl="text";
// Указатель на строку является константой
char* const str2="text";
// Указатель и сама строка – константы
const char* const str3="text";
/* Массивы указателей на символы */
// Символы являются константами
const char* textl[]={"lnel","lne2","lne3"};
// Указатели являются константами
char* const text2[]={"lnel","lne2","lne3"};
// Указатели и символы являются константами
const char* const text3={"stl","st2","st3");
79. Использование функций. Создание и использование простой функции. Прототипы функций. Вызов по значению и вызов по ссылке. Использование указателей для связи между функциями
Объявление функций: прототипы функций
1 | returnDataType functionName( dataType argName1, dataType argName2, ..., dataType argNameN); |
где,
returnDataType — возвращаемый тип данных
functionName — имя функции
dataType — тип данных
argName1...N — имена параметров функции (количество параметров неограниченно)
Смотрим пример объявления функции:
|
В языках C и C++, функции должны быть объявлены до момента их вызова. Вы можете объявить функцию, при этом функция может возвращать значение или — нет, имя функции присваивает программист, типы данных параметров указываются в соответствии с передаваемыми в функцию значениями. Имена аргументов, при объявления прототипов являются необязательными:
1 | int sum(int , int ); // тот же прототип функции |
Иногда, объявление функции называют определением функции, хотя это не одно и то же.
|
Определение функций
|
Рассмотрим определение функции на примере функции sum.
В языках C и C++, функции не должны быть определены до момента их использования, но они должны быть ранее объявлены. Но даже после всего этого, в конце концов, эта функция должна быть определена. После этого прототип функции и ее определение связываются, и эта функция может быть использована.
Если функция ранее была объявлена, она должна быть определена с тем же возвращаемым значением и типами данных, в противном случае, будет создана новая, перегруженная функция. Заметьте, что имена параметров функции не должны быть одинаковыми.
|
Согласно стандарту ANSI С все функции должны иметь прототипы. Прототипы могут располагаться либо в самой программе на С или C++, либо в заголовочном файле. Большинство прототипов функций находятся в самих программах. Объявление функции в С и C++ начинается с ее прототипа. Прототип функции достаточно прост; обычно он включается в начало программы для того, чтобы сообщить компилятору тип и количество аргументов, используемых некоторой функцией. Использование прототипов обеспечивает более строгую проверку типов по сравнению с той, которая была при прежних стандартах С.
Хотя допустимы и другие стили записи прототипов функций, все же рекомендуется использовать, по возможности, следующий стиль: повторение строки объявления функции с добавлением в конце точки с запятой. Например:
возвращаемый_тип имя_функции(тип_аргумевта(-ов)) (имя_аргумента(-ов));
Функция может иметь тип void, int, float и так далее и определяется возвращаемым типом. Имя_функции() — это любое значимое наименование, выбранное вами для определения этой функции.
Вызов функций
После того, как функция была объявлена и определена, её можно использовать, для этого её нужно вызвать. Вызов функции выполняется следующим образом:
1 | funcName( arg1, arg2, ... ); |
где,
funcName — имя функции;
arg1..2 — аргументы функции (значения или переменные)
Примечание: функции могут не иметь параметров, тогда в круглых скобочках ничего писать не надо.
Смотрим пример:
1 2 | // вызов функции синуса sin( 60 ); |
Вызов функции выполняется записью её имени, а затем круглых скобочек (). Если функция принимает аргументы, то в круглых скобках передаются аргументы, в порядке, указанном в объявлении функции. Подробно про функции, читайте статью: Функции в С++.