У меня есть две небольшие функции, называемые из основного. Ниже приведена программа
int fun1(int x)
{
int s;
s=8;
}
int fun2(int x)
{
int s;
s=x*4;
}
int main(int argc, char *argv[])
{
int n=2;
cout << fun1(n)<<endl;
cout<<fun2(n)<<endl;
return 0;
}
1.fun1(), вызываемая с аргументом x, но операция не выполняется с использованием переменной x. Таким образом, на выходе "cout << fun1() - я получаю выход 2" текущее значение n ".
2.fun2(), вызванная аргументом x, и использовала ее в операции "s = x * 4", а в выводе "cout << fun2()" - я получаю вывод 8-- "2 * 4".
Я не передаю никакого значения ссылки или указателя, чтобы функция все еще получала два разных выхода. Хотелось бы узнать, как разматывание стека отличается в двух разных случаях.
Ваши функции ничего не возвращают, несмотря на тип возврата. Это неопределенное поведение. Этот вопрос/ответ предоставляет более подробную информацию Функция с отсутствующим возвратным значением, поведение во время выполнения.
Поскольку вы вызываете неопределенное поведение, ваш вывод на дисплей практически не имеет смысла.