Rahul@puna Ответов: 2

Проверка работоспособности данной функции в C++


Всем Привет,
Мне задали следующий вопрос в интервью, и меня спросили, что у него есть проблемы с проверкой здравомыслия. Может ли кто-нибудь помочь мне в этом:

//следующая функция должна увеличить значение x
void increment(int x)
{
    x++;
    return; 
}


С уважением

Что я уже пробовал:

Я попросил изменить копию по значению, чтобы передать по ссылке, но она все еще давала ошибку.

Christian Graus

Этот код не должен выдавать ошибку. Если вы передадите по ссылке, то x будет увеличен в вызывающем коде. Если вы изменили его и получили ошибку, дайте нам новый код и ошибку, если вы застряли

2 Ответов

Рейтинг:
0

Christian Graus

Этот код не должен выдавать ошибку. Если вы передадите по ссылке, то x будет увеличен в вызывающем коде. Если вы изменили его и получили ошибку, дайте нам новый код и ошибку, если вы застряли


Rahul@puna

Конкретной ошибки как таковой не было. Я делал эту вещь на портале интервью , и их после проверки со ссылкой, он компилируется нормально, но дает некоторую ошибку здравомыслия. это я и пытаюсь выяснить. чего здесь может не хватать.

Christian Graus

Это ничего не даст. Он увеличивает локальную переменную и возвращает значение. Если вы сделаете его ref, то он будет проходить по ссылке и увеличивать переменную в вызывающем коде

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

Rahul@puna

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

void increment(int& x)
{
икс++;
вернуть;
}

Christian Graus

Что такое "ошибка проверки вменяемости"?

Rahul@puna

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

Christian Graus

Ничего. Он делает именно то, что они просили. Оператор return является излишним, вы можете удалить его. Это единственное улучшение, которое я вижу

Rahul@puna

да, это может быть.

Christian Graus

Если они написали инструмент, ошибка в инструменте не является невозможной проблемой

Рейтинг:
0

KarstenK

Одной из проблем в этой функции может быть то, что она имеет НИКАКИХ ВНЕШНИХ ЭФФЕКТОВ Входной сигнал x создается в стеке, локально модифицируется и затем уничтожается.

Таким образом, функция только модифицирует локальный x и ничего больше. Вы можете изменить это поведение с помощью оператора & -, как упоминалось ранее.


Christian Graus

В этом-то и был смысл. ему дали функцию, которая ничего не делала, и попросили заставить ее работать