int is_square(int y)
{
int x = 0;
while (x<=y)
{
if (y==1 || y==0)
{return 1;}
else if ((x*x)==y)
{return 1;}
else
{
x=x+1;
continue;
}
}
return 0;
}
Над этим кодом я думал около двух дней и моя основная ошибка в не работоспособности кода в выявлений является то что я написал переменную в функций а не в аргументе .
Тоесть я написал:
Тоесть я написал:
int is_square()
{
int x = 0;
int y = read_int() // read_int = Функция которая считывает целое число и его возвращает. (Источник - https://stepik.org)
}
Вместо:
int is_square(int y)
{
int x = 0;
}
И тут у меня логичный вопрос в чём разница? Я читаю однако до конца понимания не приходит , кажеться что в втором случае "y" Аргумент функций , а "x" переменная.
Заранее спасибо ! Кто обьяснит мне нубу что это такое и даст где можно почерпать информацию.
Заранее спасибо ! Кто обьяснит мне нубу что это такое и даст где можно почерпать информацию.
Принятый ответ
VuRdaLaK1337, в таком случае вот вам ответ. Если переменная записана в аргументах функции, то при стандартном вызове в C++ (_cdecl) все аргументы передаются через стэк. В случае, если вы объявляете переменную внутри функции, она может быть локальной - обнуляться при повторном вызове функции (не работает с массивами), либо статичной (при объявлении указано static). Статичная переменная в данном случае будет в области видимости этой функции, но при этом будет сохранять свои значения при повторном вызове. Пример:
#include <cstdio>
int a() {
static int i = 0;
printf("%d\n", i++);
return i;
}
int main() {
while(a() < 10);
return 0;
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. rhiNo1922
Если я что-то не правильно написал буду благодарен за исправление никак не претендую на истину. Просто высказал своё умозаключение.
Ред. Ev3nt
Ред. Ev3nt
Я пока Стек не изучал , хотя знаю что это что-то связано с хранением памяти.В целом остальное понял. В будущем с более обширными знаниями вернусь к этому вопросу. Спасибо за ответ!
Ред. ScorpioT1000