Мегаобучалка Главная | О нас | Обратная связь


Параметры функции. Передача параметров по значению и по адресу. Вызов функции.



2019-08-13 319 Обсуждений (0)
Параметры функции. Передача параметров по значению и по адресу. Вызов функции. 0.00 из 5.00 0 оценок




То что в скобочках является параметром функции Данный метод копирует содержимое аргумента в формальный параметр подпрограммы. Изменения, сделанные в параметре, не влияют на значение переменной, используемой при вызове. Передача по ссылке является вторым способом передачи аргументов. В данном методе копируется адрес аргумента. В подпрограмме адрес используется для доступа к настоящему аргументу, используемому при вызове. То есть, изменения, сделанные в параметре, влияют на содержимое переменной, используемой при вызове. Вызов функции: имя функции (все параметры);

34) Параметры функции. Передача одномерных массивов в качестве параметров функций. Когда массив используется в качестве аргумента функции, передается только адрес массива, а не копия всего массива. При вызове функции с именем массива в функцию передается указатель на первый элемент массива. То есть в функции нужно прописать его имя в скобках.

35) Передача многомерных массивов в функции. Указатель на массив как возвращаемое значение. При передаче многомерных массивов функции следует определить все размерности, кроме самой левой. Или использовать несколько «*». Преимуществом использования указателя как возвращаемого типа является то, что это позволяет получать из функции набор значений, в частности, массив. int *ptr = calloc(n, sizeof(int)); for (int i = 0; i < n; i++) ptr[i] = a[i] + b[i]; return ptr; В итоге вернёться сумма массивов

36) Функция main(). Параметры функции main(). Программа должна иметь глобальную функцию main — точку старта программы. int main (int argc, char *argv[] , other_parameters ) { body } argc — Неотрицательное число — количество аргументов, переданных программе из окружения, в котором запустили программу. argv — Указатель на первый элемент массива указателей на многобайтовые строки с завершающим нулем, аргументы, переданных программе из окружения, в котором запустили программу (с argv[0] по argv[argc-1]). Гарантируется, что последний элемент массива argv[argc] — нулевой указатель 0. body — Тело функции main. other_parameters — Различные реализации допускают дополнительные формы функции main, но при этом возвращаемый тип всегда int. Наиболее часто третьим аргументом передают массив char*[] указателей на значения переменных окружения.

37) Указатели на функции. Цели использования. Косвенный вызов функций. Указатель на функцию - переменная, которая содержит адрес некоторой функции. Соответственно, косвенное обращение по этому указателю представляет собой вызов функции. При помощи одного указателя можно вызывать разные функции, причём менять одну функцию на другую непосредственно в процессе работы.

38) Указатели на функции как параметры. Массивы указателей на функции. Можно использовать массив указателей, содержащих адреса функций. Иногда удобно использовать массивы функций. В самом примитивном случае можно вызывать функции в случайном порядке или задавать цепочки вызовов в нужном порядке. Непосредственно массив функций именно как массив — создать нельзя. Тем не менее, можно создавать указатели на функции и сохранять набор указателей в массиве указателей

39) Указатели на функции как параметры. Передача имен функций в качестве параметров другим функциям. Одна из самых полезных вещей, которую вы можете сделать с указателями на функции — это передать функцию в качестве аргумента другой функции. Функции, используемые в качестве аргументов для других функций, называются функциями обратного вызова. Функция: int MyFunction(int a){ printf("Hi!\n"); return 2*a; } Объявляем: int (*pt2Func)(int ) = NULL; Инициализируем указатель: pt2Func = &MyFunction; Передаем в функцию и используем: void PassPointer(int (*pt2Func)(int )) { int result = (*pt2Func)(12); cout << result << endl; } Ну крч можно помещать в функцию указатель, который указывает на функцию

40) Рекурсивные функции. Виды рекурсии. В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программ

41) Типы данных, определяемые пользователем. Переименования типов. Перечисления. Для адекватного представления информации используются типы данных построенные на основе базовых типов данных. Язык С позволяет определять свои типы данных. Сложному типу данных можно задать новое имя – typedef тип новое_имя Перечисления – списки поименованных целых констант, которым приписаны уникальные и удоюные для использования имена.

42 ) Структуры. Поля структур. Операции доступа к полям структур. Инициализация структур. Структуры – некоторый набор разнотипных данных, которые рассматриваются как новый тип данных. Инициализация: struct имя_тиап { Тип 1 эл 1; Тип 2 эл 2; … }; Доступ к полям структур : Переменная.поле_структура Указатель -> поле_структура *(указатель).поле_структура

43) Структуры как аргументы и возвращаемые значения функций. Структуры и функции. Объединения. Битовые поля. Как и любой другой объект, структура может использоваться в качестве параметра функции и также может быть возвращаемым объектом функции. структура в функцию передается по значению, а это значит, что переданную в функцию структуру мы изменить не можем. Для изменений исп указатель. Объединения – служат для размещения в одной и той же области памяти (по одному адресу) данные различных типов. В противоположность другим компьютерным языкам С имеет возможность, называемую битовыми полями, позволяющую работать с отдельными битами. Битовые поля полезны по нескольким причинам. Ниже приведены три из них: 1. Если ограничено место для хранения информации, можно сохранить несколько логических (истина/ложь) переменных в одном байте. 2. Некоторые интерфейсы устройств передают информацию, закодировав биты в один байт. 3. Некоторым процедурам кодирования необходимо получить доступ к отдельным битам в байте.

44) Препроцессор. Директивы препроцессора: #include, #define, #undef. Заголовочный файлы. Препроцессор – это программа предназначенная для обработки исходного кода перед передачей его на следующий шаг компиляции Директивы начинаются с # Директива #include предназачена для включения текста из файлов. <> - системные файлы, “ ” – локальные каталоги. Директива #define – определяет подстановку (замену) в тексте. Макроподстановка. Макроподстановка. #undef – отмена директивы #define Заголовочный файл - файл, содержимое которого автоматически добавляется препроцессором в исходный текст в том месте, где располагается некоторая директива

45) Директивы условной компиляции #ifdef. Макросы. Переменные препроцессора. Прагма #pragma. Директива #ifdef проверяет, был ли ранее определен макрос или символическая константа как #define. Если — да, компилятор включает в программу код, который находится между директивами #ifdef и #else, если nameToken ранее определен не был, то выполняется код между #else и #endif, или, если нет директивы #else, компилятор сразу переходит к #endif Директива #pragma определяется стандартом ANSI С для реализации директив, предоставляющих компилятору различные инструкции. Стандартный вид #pragma следующий: #pragma имя "Простой макрос" это тип сокращения. Это идентификатор, который используется для представления фрагмента кода. Перед использованием макроса его необходимо определить с помощью директивы '#define', за которой следует название макроса и фрагмент кода, который будет идентифицировать этот макрос

46) Области видимости. Области действия. Классы памяти. Автоматические, регистровые, статические и внешние переменные. Локальные и глобальные переменные Класс памяти определяет «время жизни» объекта. Под объектом понимается идентификатор переменной, функция либо указатель функции. Кроме этого, класс памяти в совокупности с местоположением переменной в программе, определяет область видимости переменной. Различают два вида объектов: глобальные и локальные. Объекты с глобальным временем жизни существуют и имеют значение на протяжении всего времени исполнения программы. Все функции и их указатели – глобальные объекты. Локальные объекты «захватывают» новую область памяти всякий раз, когда управление передается блоку, в котором они описаны. Автоматические переменные имеют локальную область действия. Только функция, в которой переменная определена, "знает" ее. (Конечно, можно использовать аргументы для связи значения и адреса переменной с другой функцией, однако это частичное и косвенное "знание".) Другие функции могут использовать переменные с тем же самым именем, но это должны быть независимые переменные, находящиеся в разных ячейках памяти. К счастью, регистровые переменные запоминаются в регистрах центрального процессора, где доступ к ним и работа с ними выполняются гораздо быстрее, чем в памяти. В остальном регистровые переменные аналогичны автоматическим переменным.

47) Потоковый ввод-вывод. Открытие и закрытие потока. Функции ввода-вывода. Ввод-вывод отдельных символов. Форматный ввод-вывод. В потоковых функциях файлы данных рассматриваются как поток отдельных символов. Для открытия потока нужен указатель типа: FILE *fp; fp = fopen (имя файла, “w/r/a ”) fclose - закрытие fgetc, fputc,fgets,fputs,. Форматный ввод-вывод – scanf() printf() для файлов fscanf(), fprintf().

48) Спецификаторы форматного ввода-вывода. Работа с файлами на диске. Открытие и закрытие файла. Общий синтаксис спецификатора формата %[флаги][ширина][.точность][длина]спецификатор Спецификатор – это самый важный компонент. Он определяет тип переменной и способ её вывода. FILE *fp; fp = fopen (имя файла, “w/r/a ”) fclose - закрытие в имя файла указываем путь

49) Символы и строки в языке С. Функции для работы со строками и символами. Определение длины строки. Копирование и сравнение строк. Строка -- это последовательность ASCII или UNICODE символов. Для ввода и вывода строковой информации можно использовать функции форматированного ввода и вывода (printf и scanf). Для ввода и вывода строк в библиотеке stdio.h содержатся специализированные функции gets и puts. Вместо gets обычно используется функция fgets с тремя параметрами: char * fgets(char * buffer, int size, FILE * stream); Функция вычисления длины строки: size_t strlen(const char *string); Функции копирования строк: char * strcpy(char * restrict dst, const char * restrict src); char * strncpy(char * restrict dst, const char * restrict src, size_t num); Функции сравнения строк: int strcmp(const char *string1, const char *string2); int strncmp(const char *string1, const char *string2,size_t num);

50) Символы и строки в языке С. Преобразование строк. Обращение строк. Поиск символов. Поиск подстрок. предусмотрен следующий набор функций: double atof(const char *string); // преобразование строки в число типа double int atoi(const char *string); // преобразование строки в число типа int long int atol(const char *string); // преобразование строки в число типа long int long long int atoll(const char *string); // преобразование строки в число типа long long int Функции поиска символа в строке: char * strchr(const char *string, int c); char * strrchr(const char *string, int c); Функция поиска строки в строке: char * strstr(const char *str, const char *substr






 



2019-08-13 319 Обсуждений (0)
Параметры функции. Передача параметров по значению и по адресу. Вызов функции. 0.00 из 5.00 0 оценок









Обсуждение в статье: Параметры функции. Передача параметров по значению и по адресу. Вызов функции.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (319)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)