Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 16:31   #1
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию Зачем нужен void?

Зачем нужно указывать тип void для функции, которая не возвращает значения? Без него функция тоже работает.
Сергей089 вне форума Ответить с цитированием
Старый 22.03.2009, 16:38   #2
Cdevelop
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 43
По умолчанию

Попробуй!
Код:
#include <iostream>
using namespace std;
void func(int m)
{
	return m;
}
int main()
{
	int n;
	n=5;
	cout<<func(n);

cin.get();
}
Cdevelop вне форума Ответить с цитированием
Старый 22.03.2009, 17:01   #3
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Не работает
'func(int)' cannot return a value
Ведь в функции с типом void нельзя писать return.
Сергей089 вне форума Ответить с цитированием
Старый 22.03.2009, 18:18   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Это где работает функция без void? В некоторых компиляторах?
Сколько я ни сталкивалась с С++, void везде требовался.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 22.03.2009, 18:22   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

void это как процедура в делфи.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 22.03.2009, 18:35   #6
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Это где работает функция без void?
В C++ Builder 6
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <stdio.h>

sum (int x,int y);

int main(int argc, char* argv[])
{
        int a = 3,b = 5;
        sum (a,b);
        system ("pause");
        return 0;
}
//---------------------------------------------------------------------------
sum (int x,int y)
{
        printf ("%i+%i=%i\n", x,y,x+y);
}
т.е. void нужен чисто, чтобы показать человеку, что перед ним процедура?
Сергей089 вне форума Ответить с цитированием
Старый 22.03.2009, 19:28   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Тип void указывает на отсутствие информации. Он нужен для того, что бы показать компилятору что функция не возвращает или не принимает значений. По стандарту языка С, если в объявлении функции не указаны никакие типы (например int func(){...}) - это значит что об аргументах этой функции ничего не известно. По стандарту С++, при таком же объявлении функции, это значит что функции принимает тип void (эквивалентно int func(void)).
Так же тип void нужен для описания указателей, указывающих на любой тип информации. Например:
Код:
void *a;
Многие функции для работы с памятью (например malloc) возвращают именно такие указатели.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 23.03.2009, 17:08   #8
Linky
 
Регистрация: 05.02.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Сергей089 Посмотреть сообщение
Ведь в функции с типом void нельзя писать return.
Можно, он служит как инструкция выхода из ф-и.

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

Последний раз редактировалось Linky; 23.03.2009 в 17:14.
Linky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция main и main(void) Pord Помощь студентам 1 11.12.2008 15:57
Зачем живем? Simply-Art Свободное общение 6 16.10.2008 15:44
Зачем указателю тип? Scratch Общие вопросы C/C++ 5 30.09.2008 11:48
Зачем принтеру процессор? Иллидан Компьютерное железо 6 21.05.2008 20:11
Static Void Problem RIO Общие вопросы .NET 2 02.05.2008 16:52