Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

CradleA
Статус: Профессор
Рейтинг: 129
∙ повысить рейтинг »
solowey
Статус: Студент
Рейтинг: 88
∙ повысить рейтинг »
mklokov
Статус: 6-й класс
Рейтинг: 23
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1941
Дата выхода:11.07.2018, 19:45
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:37 / 26
Вопросов / ответов:3 / 5

Консультация # 19358: Никак не могу подружиться с ссылками и с возвращаемыми значениями ф-ций =( -почему функция, которая возвращает параметр как значение должна сначала сделать копию его а потом возвратить? -почему при возврате значения как ссылки копия не делается? и делается ли что-то вообще? (по идее должна делать копия переменной представляющей ссылку) ...
Консультация # 58670: Здравствуйте уважаемые эксперты. Я совсем недавно начала осваива С++. У меня возник такой вопрос: 1)Я пишу программу которая работает с матрицами (складывает, умножает..). Матрица заполняется в основной программе. У меня есть метод класса Summa, который должен складывать матрицы. Подскажите пожалуйста, как мне передать мои матрицы в метод S...
Консультация # 157235: Здравствуйте уважаемые эксперты!У меня завтра экзамен по программированию, и мне дали задания на дом, но я не знаю как написать несколько программ!будьте добры, помогите пожалуйста написать программы на языке С++!!!вот вопросы: 1)Массивы Двумерный массив 6 на 7 повернуть вокруг среднего столбца.Ввод должен выполняться с клавиатуры 2)Функци...

Консультация # 19358:

Никак не могу подружиться с ссылками и с возвращаемыми значениями ф-ций =(
-почему функция, которая возвращает параметр как значение должна сначала сделать копию его а потом возвратить?
-почему при возврате значения как ссылки копия не делается? и делается ли что-то вообще? (по идее должна делать копия переменной представляющей ссылку)
-допустим у нас есть класс с открытыми методами достуап и закрытыми членами-переменними, делаются ли функциями-членами, которые возвращают значение переменных-членов, копии переменных(обьектов)-членов перед тем как их возвратить как значения?
вобщем я немного запутался и прошу не судить меня строго, я толька начинаю изучать с++!

Дата отправки: 07.04.2005, 14:32
Вопрос задал: ohitmano
Всего ответов: 3
Страница онлайн-консультации »


Консультирует dentist:

Здравствуйте, ohitmano!
не... погоди... тебе для начала нужно отделить друг от друга понятия параметр и возвр.значение.
1.
значит так:
параметры функции могут передоваться по значению (т.е. функция работает со сзначением параметра)
и по ссылке (ссылку на переменную), т.е. фактически функция получает возможность изменять значения переменных, ей не принадлежащих.
пример1:
int foo(int * a) { return ++(*a); }; // или ++*a, без разницы
void main()
{
int a = 100;
foo(&a); // теперь значение переменной a = 101
}
пример2:
int foo(int a) { return ++a; };
void main()
{
int a = 100;
int b = foo(a); // значение переменной b = 101, a = 100
}
2.
если говорить о возвращении функцией ссылки то нужно понимать, что переменная внутри функции, пренадлежит и существует, только внутри этой самой функции.
здесь функция всётаки вернёт некий адрес, но этой переменной после выхода из функции уже не будет существовать. этот момент можно обойти объявив статическую переменную:
int * foo()
{
static int a = 100;
return &a;
}
т.е. со статическим элементом это прокатит.
а если нужно, чтоб вункция возвращала адрес вновь созданной переменной то так:
int * foo()
{
int * a = (int*) malloc(sizeof(int)); // выделим память
return a;
}
но в этом случае нужно не забыть освободить память от ненужных данных
void main()
{
int * a = foo();
// чего-то с ней делаем
// и когда она нам более не нужна:
free(a);
}
надеюсь доступно объяснил.
удачи!

Консультировал: dentist
Дата отправки: 07.04.2005, 16:14
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Федин А.В.:

Здравствуйте, ohitmano!
Ссылка - второе имя переменной. Т.е. под нее не виделяется ни каких ресурсов. Все операции проводимые над ссылкой производяться напрямую над переменной (это происходит на уровне компилятора, до генерации кода).
При вызове ф-ции параметры ей могут передоваться двумя способами:
1. Как адрес переменной (передача по ссылке),
2. Как копия переменной (передача по значению).
В первом случае все операции, произведенные над переменной, сохроняться после выхода из ф-ции.Во втором случае после выхода из ф-ции значение переменной не измениться.
Если что-то не понятно пиши на мыло xaliavka@mail.ru или аська: 282926739

Консультировал: Федин А.В.
Дата отправки: 08.04.2005, 16:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Raptor1:

Здравствуйте, ohitmano!
Кажется будет проще показать на паре примеров. При возврате значения как ссылки делается временная переменная-ссылка на возвращаемое значение

Приложение:

Консультировал: Raptor1
Дата отправки: 08.04.2005, 23:16
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 58670:

Здравствуйте уважаемые эксперты.
Я совсем недавно начала осваива С++. У меня возник такой вопрос:
1)Я пишу программу которая работает с матрицами (складывает, умножает..). Матрица заполняется в основной программе. У меня есть метод класса Summa, который должен складывать матрицы. Подскажите пожалуйста, как мне передать мои матрицы в метод Summ. Матрицы статические 50х50. Если можно приведите программный код.
2)И еще такой вечный вопрос smile Как сделать чтобы Delphi и Builder C дружили. Тут недавно рассылка вышла, пишут игру на Builder C, а работаю я больше в Delphi. А игру пописать тоже хочется.
Ну вот пока все! Спасибо за внимание smile

Дата отправки: 12.10.2006, 14:26
Вопрос задал: KInika
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Jadd:

Здравствуйте, KInika!
1)Дык очень просто. Можно передать указатель на Вашу матрицу в функию в качестве аргумента. См. приложение как пример.

2)Не совсем понятно что хочется видеть или изобразить. Уточните, пожалуйста, в личку или форум.

Удачи.

Приложение:

Консультировал: Jadd
Дата отправки: 12.10.2006, 15:19
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 157235:

Здравствуйте уважаемые эксперты!У меня завтра экзамен по программированию, и мне дали задания на дом, но я не знаю как написать несколько программ!будьте добры, помогите пожалуйста написать программы на языке С++!!!вот вопросы:
1)Массивы
Двумерный массив 6 на 7 повернуть вокруг среднего столбца.Ввод должен выполняться с клавиатуры
2)Функции
Создать функцию, вычисляющую НОД.Используя эту функцию найть наибольший общий делитель элементов одномерного массива из 10 элементов
3)последовательности
В последовательности целых положительных чисел найти максимальное количество идущих подряд одинаковых элементов
4)структуры
В магазин "Диета" в течение 5 дней поступили продовольственные товары 9 наименований.Известны наименование каждого вида товара, его цена и количество товара, поступившего в течение каждого дня.Вывести на экран стоимость всех товаров. поступивших в течение каждого дня.Создать структуру в глобальной области и использовать ее при написании программы.Для хранения данных использовать массив.
Буду очень благодарен, если поможете!!

Дата отправки: 10.01.2009, 18:07
Вопрос задал: Дианов Р.З
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Micren:

Здравствуйте, Дианов Р.З!
Программы тестировалась на MS Visual Studio 2008

Приложение:

Консультировал: Micren
Дата отправки: 10.01.2009, 22:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное