С++ Void - что сие есть?

  • Автор темы toto
  • Дата начала
T

toto

#1
Всем привет!
Начинаю постигать самые-самые азы С++ и дошёл до void и не могу до конца понять что это такое, вернее даже как с этим работать?
Гуглил и читал несколько вариаций определения void, но так и не дошло :rolleyes: .
Если кто-нибудь может, то приведите самый-самый примитивный пример с использованием void и без него с пояснением почему и как на пальцах для самых глупых.
Пожалуйста, когда просмеётесь или наворчитесь от глупости вопроса, всё же ответьте!
Спасибо за внимание!
 

Senset

Well-known member
11.09.2006
136
0
#2
всё достаточно просто...
если тебе ничего не нужно возвращать через имя функции - то ставь void (пусто) - т.е. не нужно будет писать return...

функции считает синус =)
void my_sin(float x; float *rez)
{
rez=sin(x);
}

float my_sin(float x)
{
return sin(x);
}

ввод массива
здесь достаточно юзать void, ибо вернуть через имя функции весь массив нельзя, точнее можно... но пока думай что нельзя =) не забивай голову сразу
void array_input(int n, int *a)
{
for (int i=0;i<n;i++) scanf("%d",&a);
}

тоже самое, но через имя теперь вернется никому не нужный нуль =) хотя это можно использовать для определения ошибки в функции, т.е. если по выполнению - вернулся не нуль, значит где-то косяк
float array_input(int n, int *a)
{
for (int i=0;i<n;i++) scanf("%d",&a);
return 0;
}
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#3
здесь достаточно юзать void, ибо вернуть через имя функции весь массив нельзя, точнее можно... но пока думай что нельзя =) не забивай голову сразу
Ахринеть.. раза 4 перечитал фразу пока понял..

Добавлено: Слушайте этого дядю. Он умный)
 
T

toto

#4
Senset
Прокомментируй или даже пропиши, пожалуйста, словами каждую строчку. Это бы мне очень помогло и избавило бы от вопросов. Кое-что я знаю, а кое-что меня путает.
Понимаю, что уже возможно похоже на наглость, но было бы очень здорово.
Спасибо!)
 

DarkKnight

Well-known member
01.08.2010
653
0
#5
ввод массива
здесь достаточно юзать void, ибо вернуть через имя функции весь массив нельзя, точнее можно... но пока думай что нельзя =) не забивай голову сразу
Во как загнул))) ржу - не могу)))) Но по сути в словах смысла очень много)))
 

DarkKnight

Well-known member
01.08.2010
653
0
#6
Начинаю постигать самые-самые азы С++ и дошёл до void и не могу до конца понять что это такое, вернее даже как с этим работать?
Гуглил и читал несколько вариаций определения void, но так и не дошло .
Если кто-нибудь может, то приведите самый-самый примитивный пример с использованием void и без него с пояснением почему и как на пальцах для самых глупых.
Принцип очень прост, если ты хочешь быть уверенным что функция не должна использоваться не по назначению (100%ов не возвращать никогда значение и не принимать их ни при каких обстоятельствах ты используешь void)....
Попробую на примере объяснить, программист упускает void и думает что функция f,которая предположим должна менять какую то глоб. переменную, никогда не понадобиться для возврата значения, поэтому он пишит по старинки берет int
int c; //глобальная переменная
int f(int a,int :lovecodeby:
{
//что то делаем
c= a + b;
//А что бы правельно выйти делать стандартный код выхода например 1
return 1;
}

другой программист дописывает программный модуль для стравнения сравнения статуса защиты например
когда что-то не так то например форматнуть жесткий диск что бы данные не попали к кому нибудь :))) Ну для примера же ;-)
и пишит функцию, если возвращает 0 - все ок... если 1- палево....форматим жестак... :)
int f2(int a,int :ithx:
{
int result = 0;
///что то делаем там
//условия, сравнения и прочее

return result;
}

и в исполняемом месте, к примеру в main вписывает это сравнение

void main (void)
{
....
....
if ( f(3,4) == (int)1) //И вот незадача, он забыл, что у него функция f2 (с циферкой), а не просто f, а она в свою очередь всегда 1 возвращает, а не должная возвращать вообще ничего....
{
//код форматирования
}
//Запускает на тест... Бах... и у него больше нет жестака :)))

}


Ну это грубо конечно, но должно быть понятно...
void - гарантирует, что функция не вернет ничего и не примет ничего
 
04.09.2006
2 566
3
#7
дошёл до void и не могу до конца понять что это такое, вернее даже как с этим работать?
http://ru.wikipedia.org/wiki/Void

Добавлено:
вернуть через имя функции весь массив нельзя, точнее можно... но пока думай что нельзя =) не забивай голову сразу
В цитатник, однозначно
 
G

Guest

#9
воид - тип "пустое значение", до функции описывается тип возвращаемых данных воид значит что функция ничего не возвращает тоесть возвращает пустое значение, используют для работы функций с указателями, динамическими массивами или глобальными переменными.
 
S

skysun

#11
Я не гуру С/С++. В работе чаще использую другие языки.
Но если правильно помню void это generic type. Поэтому он в некоторых случаях означает "ничего", а в других "все". Я имею ввиду что void* может указывать на все что угодно и т.п.
Вроде как-то так.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#12
void - это отсутствие типа.
void * - это указатель на неопределенный тип, т.е. его можно так сказать закастить в любой другой, например:
C++:
void * x;
char * p;
x = malloc( 1024 );
p = (char *)x;
 

Vadik(R)

Well-known member
12.12.2007
469
0
#13
Да, второе применение void - это использование как нетипизированного указателя.
P.S. У самого после Delphi голова разрывалась, чтобы понять, что сие за чудо такое. Как-то понимание пришло со временем и практикой ;)