Может ли функция main иметь тип void

Может ли функция main иметь тип void

Указатели типа void

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

Если необходимо работать с пустым указателем, то сначала нужно явно привести тип. Например

Переменная не может иметь типа void, этот тип определён только для указателей. Пустые указатели нашли широкое применение при вызове функций. Можно написать функцию общего назначения, которая будет работать с любым типом. Например, напишем функцию swap, которая обменивает местами содержимое двух переменных. У этой функции будет три аргумента – указатели на переменные, которые необходимо обменять местами и их размер.

Наша функция может выглядеть и по-другому. Обойдёмся без дорогостоящего выделения памяти и будем копировать побайтно.

Пустые указатели позволяют создавать функции, которые возвращают и принимают одинаковые параметры, но имеют разное название. Это пригодится в дальнейшем, при изучении указателей на функции. Например

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

По мере того как ваши программы становятся больше и сложнее, вы будете делить их на несколько небольших легко управляемых частей. При этом оператор void main(void) указывает начальные (или главные) операторы программы — часть программы, которая выполняется первой.

Читайте также:  Были и лето и осень дождливы пунктуация

Представление о главной программе

Исходные файлы C++ могут содержать очень много операторов. При запуске программы оператор void main(void) определяет главную программу, содержащую первый выполняемый оператор. Ваши программы на C++ должны всегда включать один и только один оператор с именем main.

При рассмотрении больших программ на C++ ищите main, чтобы определить операторы, с которых начинается выполнение программы.

Как только ваша программа становится более сложной, вы должны разделить ее на небольшие более легко управляемые части, называемые функциями. Функция представляет собой простой набор операторов внутри программы, выполняющих определенную задачу. Например, при создании программы платежных документов, вы могли бы создать функцию с именем salary, вычисляющую оклад служащих. Аналогичным образом, если вы пишете математическую программу, вы могли бы создать функции с именами square_root или cube, которые возвращают результат определенных математических операций. Если ваша программа использует функцию, функция выполняет свою задачу и затем возвращает свой результат программе.

Каждая функция в вашей программе имеет уникальное имя. А каждая программа имеет по крайней мере одну функцию. Каждая программа из урока 1 имела только одну функцию с именем main. Урок 9 предоставляет более подробный обзор функций. В данный момент просто имейте в виду, что функция состоит из нескольких связанных по смыслу операторов, выполняющих определенную задачу.

При исследовании различных программ на C++ вы будете постоянно сталкиваться со словом void. Программы используют слово void для указания того, что функция не возвращает значения или не имеет значений, передаваемых в нее.

ГРУППИРУЮЩИЕ ОПЕРАТОРЫ

По мере усложнения в ваших программах будет один набор операторов, которые компьютер должен выполнить определенное число раз, и другой набор операторов, которые компьютер должен выполнить, если выполняется определенное условие. В первом случае компьютер может выполнить один и тот же набор операторов 100 раз, чтобы добавить для 100 студентов тестовые очки. Во втором случае компьютер может вывести на экран одно сообщение, если все студенты прошли тест, и другое сообщение, если один или несколько студентов потерпели неудачу. Внутри своих программ на C++ вы будете использовать правую и левую фигурные скобки <>, чтобы сгруппировать связанные операторы. В простых программах, представленных в нескольких первых уроках книги, эти символы группируют операторы, которые соответствуют операторам вашей главной программы.

Читайте также:  Permission denied please try again ssh linux

Все операторы языка С++ могут быть условно разделены на следующие категории:

— операторы перехода (break, continue, return, goto);

— другие операторы (оператор "выражение", составной оператор и пустой оператор);

— условные операторы, к которым относятся оператор условия if и оператор выбора switch;

— операторы цикла (for,while,do while);

Все операторы языка С++, кроме составных операторов, заканчиваются точкой с запятой ";".

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Сдача сессии и защита диплома — страшная бессонница, которая потом кажется страшным сном. 9141 — | 7368 — или читать все.

У меня проблема с использованием void *. Как я должен сделать, чтобы использовать эту функцию clean_buffer для массивов int и float.

6 ответов

Тип void не имеет размера. Поэтому вы не можете использовать void * для очистки массива. Вы не можете разыменовать этот тип по той же причине.

Вы должны привести к указателю с определенным типом:

Вы должны позаботиться о том, чтобы размер, передаваемый вашей функции, не мог быть числом или массивами, потому что компилятор не может выполнять арифметику указателей с [114 ] указатели. А для размеров вы должны использовать size_t

Вместо этого вы должны передать размер массива в байтах:

Или вам нужно передать любую другую информацию, которая может быть использована для определить тип и / или размер данных.

Также: приведение к возвращаемому значению malloc не требуется в C. Приведение параметров clean_buffer к типу, который уже имеет переменную, бесполезно. Тип указателя в любом случае преобразуется в void * , поскольку это то, что ожидает функция.

Примечание: в других ответах и ​​комментариях упоминается, что вы можете просто передать указатель на memset или использовать calloc и т. Д. Это может быть верно для этого очень специфического случая, но если вы хотите сделать что-то еще, кроме простого обнуления памяти применимы те же аспекты, что и к указателям void * , как я показал здесь. И в этих случаях memset или calloc не помогают.

Ссылка на основную публикацию
Могут ли задержать в армии больше срока
Поступил на военную службу по призыву 6.07.2011 года, заключил контракт 31.12.2011 года, отправили на обязательные курсы для перехода в новый...
Мегафон опции за рубежом
Всем абонентам мобильной связи известно, что оплата услуг в роуминге достаточно высокая. Кроме того, нужно платить за входящие звонки. И...
Мегафон отправить деньги с телефона на телефон
Каждый клиент компании Мегафон при необходимости может со своего счёта пополнить баланс близкого, который также пользуется услугами данного оператора. Для...
Модели ограниченного и неограниченного роста 11 класс
В данном листке предлагаются различные модели роста популяций биологических видов. Математическими методами можно предсказать скорость развития эпидемии, изменение популяций животного...
Adblock detector