Другие языки программирования и технологии
Помогите разобраться с заданием С++.
Есть такое задание: Перегрузку можно осуществить путём создания функций, одна из которых возвращает значение через своё имя, другая осуществляет передачу параметров с помощью указателей, третья осуществляет передачу параметров с помощью ссылок. Подскажите, как что понимать: одна из которых возвращает значение через своё имя - это что то типа F=funcname(X) ? другая осуществляет передачу параметров с помощью указателей - это что то типа int funcname(int* X) с обращением к ней F= funcname(&X) ? третья осуществляет передачу параметров с помощью ссылок - а как тут быть??
одна из которых возвращает значение через своё имя
int f(void)
{
return значение;
}
другая осуществляет передачу параметров с помощью указателей
void f(int *x)
{
*x = значение;
}
третья осуществляет передачу параметров с помощью ссылок.
void f(int &x)
{
x = значение;
}
int f(void)
{
return значение;
}
другая осуществляет передачу параметров с помощью указателей
void f(int *x)
{
*x = значение;
}
третья осуществляет передачу параметров с помощью ссылок.
void f(int &x)
{
x = значение;
}
насколько я знаю &X это и есть ссылка, т. е. передача через ссылку:
void func(int& X); //если не ошибаюсь. .
любое изменение ссылки повлечет за собой изменение переменной. . ну типо:
b=2;
&a=b //&a=2; b=2
&a=3 //&a=3; b=3
void func(int& X); //если не ошибаюсь. .
любое изменение ссылки повлечет за собой изменение переменной. . ну типо:
b=2;
&a=b //&a=2; b=2
&a=3 //&a=3; b=3
Вроде со всем разобрались, кроме первого варианта.
Функция вида int& funcname(), результат её работы возвращается НЕ по значению, как всегда, а по ссылке. Таким образом можно создавать конструкции вида funcname()=value, имея ввиду, что вместо фукнции будет стоять lvalue. Например
...
int& funcname(int& var) {return var;}
...
main()
{
int x=3;
funcname(x)=10;
printf("%d", x);
return 0;
}
PS: Простите, если есть неточности - я давно не писал на С++
Функция вида int& funcname(), результат её работы возвращается НЕ по значению, как всегда, а по ссылке. Таким образом можно создавать конструкции вида funcname()=value, имея ввиду, что вместо фукнции будет стоять lvalue. Например
...
int& funcname(int& var) {return var;}
...
main()
{
int x=3;
funcname(x)=10;
printf("%d", x);
return 0;
}
PS: Простите, если есть неточности - я давно не писал на С++
Алексей Пермяков
Такой вопрос, а смысл в данной манипуляции, ведь на выходе мы получаем 10.
Ссылка - это по сути псевдоним, другое имя для той же переменной. Передача параметра с помощью ссылки будет выглядеть так:
funcname(int &a)
{
a++;
}
int x=10;
funcname(x);
//теперь х равен 11
funcname(int &a)
{
a++;
}
int x=10;
funcname(x);
//теперь х равен 11
int x, y; // глобальные переменные
void func(int&, int&); //прототип
int main()
{
cin >> x >> y;
func(x, y); // под x придет а, под y придет b.
cout << "x = " << x << " y = " << y; // x = 33 y = 11
}
void func(int&a, int&b)
{
x=33;
y=11;
//return не надо оперирует глобальными переменными а не копиями
}
void func(int&, int&); //прототип
int main()
{
cin >> x >> y;
func(x, y); // под x придет а, под y придет b.
cout << "x = " << x << " y = " << y; // x = 33 y = 11
}
void func(int&a, int&b)
{
x=33;
y=11;
//return не надо оперирует глобальными переменными а не копиями
}
Анатолий Долганов
вай напутал с переменными xD
Передача по ссылке.
int x, y; // глобальные переменные
void func(int&, int&); //прототип
int main()
{
cin >> x >> y;
func(x, y); // под x придет y, под y придет x.
cout
Передача по ссылке.
int x, y; // глобальные переменные
void func(int&, int&); //прототип
int main()
{
cin >> x >> y;
func(x, y); // под x придет y, под y придет x.
cout
Похожие вопросы
- Прошу помочь разобраться, пояснить некоторые пункты требования ТИПОГРАФИИ.
- Кто-нибудь может помочь разобраться в информатике? У нас какие-то задания на системы счисления, я не понимаю
- Помогите разобраться, Pascal!
- добрый вечер!помогите пожалуйста решить задание
- помогите разобраться с++
- помогите решить 2 задание на pascalABC
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- Программирование. Помогите разобраться с направлениями (Ruby, Java, JavaScript, С++, Python, PHP, QA)
- С# (сишап) Помогите плиз 5 задания любой из них какой легкий надо решать только один)
- Помогите с домашним задание C#