C++ Вопрос Void func

Начинающий
Статус
Оффлайн
Регистрация
7 Окт 2020
Сообщения
79
Реакции[?]
6
Поинты[?]
2K
Всем ку, вуфел сел учиться программированию, первым языком выбрал плюсы. Сижу читаю читаю, наткнулся на войд. Почитал, посмотрел примеры. Так и не понял, а зачем оно надо? Это int, только в ней нельзя данный редактировать, ли че шо?
 
Начинающий
Статус
Оффлайн
Регистрация
14 Май 2022
Сообщения
14
Реакции[?]
2
Поинты[?]
2K
я сам кнч вуфел но void оно не чего не возвращает а int оно возвращает допустим int main ты когда делаешь дефолт функцию то ты обычно ещё в конце ставишь return 0; а если ты пропишешь void main опять таки функцию делаешь то не чё не сможешь вернуть!!!
я сам кнч вуфел но void оно не чего не возвращает а int оно возвращает допустим int main ты когда делаешь дефолт функцию то ты обычно ещё в конце ставишь return 0; а если ты пропишешь void main опять таки функцию делаешь то не чё не сможешь вернуть!!!
я не могу сказать зачем она вообще нужна но пользуюсь я ей очень часто)
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
228
Реакции[?]
20
Поинты[?]
4K
Всем ку, вуфел сел учиться программированию, первым языком выбрал плюсы. Сижу читаю читаю, наткнулся на войд. Почитал, посмотрел примеры. Так и не понял, а зачем оно надо? Это int, только в ней нельзя данный редактировать, ли че шо?
я конечно не дохуя знаток, сам учусь, но void - это функция, которая ниче не возвращает. void пишут, когда тебе не важен результат выполнения функции, вот например
C++:
using namespace std;
void gay(string name){
    cout << name << "is a gay" << endl;
}
gay("12312321")
тебе тут не нужен результат ее выполнения, она ниче не вычисляет, тебе не нужно записывать результат в переменную
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
516
Реакции[?]
495
Поинты[?]
84K
функции типа void предназначены для:

1 - процедурная функция, то есть функция в имплементации которой имеется только выполнение каких-либо действий, не требующих возврата значения, простой пример: функция, которая выводит текст на экран или изменяет состояние объекта, но не предоставляет в результате какое-то конкретное значение.
пример такой функции привёл человек выше

2 - функция, изменяющая состояние внешних объектов, тут проще показать на примере, всё довольно очевидно
C++:
void increment_value(int& value) {
    value++;
}

если погуглить то наверняка можно найти десятки подобным тем на stack-overflow, умные люди уже очень давно всё расписали
 
rgb(24, 205, 154)
Пользователь
Статус
Оффлайн
Регистрация
9 Фев 2019
Сообщения
287
Реакции[?]
80
Поинты[?]
75K
C++:
#include <iostream>

void vFunc(int* a)
{
    *a*=2;
}

int iFunc(int a)
{
    return a+a;
}

int main()
{
    int a;
    std::cin >> a;
    a = iFunc(a);
    vFunc(&a);
    return 0;
}
Для примера такой код ,короче результат в iFunc для x86 cdecl передается в регистр EAX 1701337795995.png
1701337818004.png
Тут видно, что после функции eax вместо 9 стал 18(12 в 16-ричной системе)
А после войдовской функции
Пожалуйста, авторизуйтесь для просмотра ссылки.

как видим EAX не содержит ничего нужного, тобишь ничего не вернула функция, а или может я навернул говно и не прав, надеюсь гении плюсов подправят меня(Maybe baby, etc)
 

Вложения

Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
694
Реакции[?]
326
Поинты[?]
12K
C++:
#include <iostream>

void vFunc(int* a)
{
    *a*=2;
}

int iFunc(int a)
{
    return a+a;
}

int main()
{
    int a;
    std::cin >> a;
    a = iFunc(a);
    vFunc(&a);
    return 0;
}
Для примера такой код ,короче результат в iFunc для x86 cdecl передается в регистр EAX Посмотреть вложение 264963
Посмотреть вложение 264964
Тут видно, что после функции eax вместо 9 стал 18(12 в 16-ричной системе)
А после войдовской функции
Пожалуйста, авторизуйтесь для просмотра ссылки.

как видим EAX не содержит ничего нужного, тобишь ничего не вернула функция, а или может я навернул говно и не прав, надеюсь гении плюсов подправят меня(Maybe baby, etc)
Ты прав, возвращаемое значение сохраняется в еах'е после выполнения функции, но зачем ты кидаешь скрины с иды человеку и грузишь его регистрами?Можешь впринципе в hex view прыгнуть и прогнать его по мнемоникам , рассписать их байтовое представление :roflanPominki:
 
rgb(24, 205, 154)
Пользователь
Статус
Оффлайн
Регистрация
9 Фев 2019
Сообщения
287
Реакции[?]
80
Поинты[?]
75K
Ты прав, возвращаемое значение сохраняется в еах'е после выполнения функции, но зачем ты кидаешь скрины с иды человеку и грузишь его регистрами?Можешь впринципе в hex view прыгнуть и прогнать его по мнемоникам , рассписать их байтовое представление :roflanPominki:
На самом деле просто по личному опыту, если бы с изучением плюсов мне показывали сразу как это работает на низком уровне, у меня было бы меньше вопросов как и что работает и почему
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
694
Реакции[?]
326
Поинты[?]
12K
На самом деле просто по личному опыту, если бы с изучением плюсов мне показывали сразу как это работает на низком уровне, у меня было бы меньше вопросов как и что работает и почему
Эта стратегия сработает при условии , что ты не полный ноль, в данном случае мужик нихуя не поймёт.

upd. Под " не полный ноль " , подразумевается знание плюсов на уровне ООП енжоеер, с возможностью читать чужой код с 25й попытки , параллельно не забивая в поисковики "значение ключевого слова void, и когда функция может не возвращать значение".На данном этапе у ТС'а нет логики, и он не может даже представить случаи когда функция может не возвращать значение, это фиксится только практикой.Из твоего примера следует что при изучении локальных переменных, ты бы ему начал рассписывать про стек-> создания стека в прологе -> очистку в эпилоге ( а он еще может не чистится в эпилоге , в зависимости от call declaration, вот тут то он и забросит нахуй изучение ) -> виртуальную память.А он просто не ебёт почему в конкретной ситуацию не надо возвращать ничего из функции.Совет ТС'у, тебе примеры подсказали, ищи ещё примеры в том же chatgpt, изучай всё последовательно и будет тебе счастье.
 
Последнее редактирование:
Сверху Снизу