Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224

Почему иногда функции передается значение int, а иногда - нет?

06.02.2010, 11:40. Показов 2382. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1 случай:

C++
1
2
3
4
5
6
7
void Function_1(int* & rVarOne, int* &rVarTwo)
{
    /* Какие-то операции с указателями:
    rVarOne++;
    *rVarOne = *rVarTwo;
    */
}
2 случай:

C++
1
2
3
4
void Function_2(int varOne, int* &rVarTwo, int* &rVarThree)
{
    // то же самое...
}
Запуск функций:
C++
1
2
3
4
int varOne, varTwo, varThree;
Function_1(varOne, varTwo);             // работает
Function_2(varOne, varTwo, varThree);       // НЕ работает!!!!!
...
Почему не получается запустить Function_2 ??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2010, 11:40
Ответы с готовыми решениями:

Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет
Доброй ночи, кто может объяснить почему иногда отслеживает нажатие на три кнопки сразу, а иногда нет. И как выйти с ситуации *( P.S. Пишу...

Openssl. Иногда вызов функций шифрования проходит нормально, иногда нет
Всем привет! Использую библиотеку openssl для шифрования / дешифрования. Генерирую ключи следующим образом: RSA...

Почему программа иногда возвращает не нулевой результат, а иногда нуль?
С чем подобное может быть связана?

10
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 12:12
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Function_1(varOne, varTwo); // работает
не должно работать. varOne типа int.
а функция принимает указатель.
0
 Аватар для OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 12:23  [ТС]
>> zim22

не должно работать. varOne типа int.
а функция принимает указатель.
функция принимает указатель НА АДРЕС!

Поэтому должно работать.
0
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
06.02.2010, 13:24
например у меня ни одина из этих функций не пропускается компилятором (DEV-C++).
зато так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
int f(int* &var)
{
    return *var + *var;
}
int main()
{
    int x=5;
    int *ptr=&x;
    cout << f(ptr) << endl;// на экране число 10
    getch();
    return 0;
}
о чем это говорит?
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.02.2010, 13:35
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
>> zim22
функция принимает указатель НА АДРЕС!
на адрес? а я думал - на ссылку ((
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 13:59
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
функция принимает указатель НА АДРЕС!
не надо орать. тем более если ты не прав

C++
1
void Function_1(int* & rVarOne, int* &rVarTwo)
в качестве параметров этой функции должны быть переданы указатели.
которые она примет по ссылке.
но она не принимает инты. инт и указатель на инт - две большие разницы.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.02.2010, 14:14
Цитата Сообщение от zim22 Посмотреть сообщение
не надо орать. тем более если ты не прав

C++
1
void Function_1(int* & rVarOne, int* &rVarTwo)
в качестве параметров этой функции должны быть переданы указатели.
не просто указатель, а "указатель на ссылку на целое". каракатица такая
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 14:54
Цитата Сообщение от novi4ok Посмотреть сообщение
не просто указатель, а "указатель на ссылку на целое"
нет. ты не прав.
ссылка на целое тут не причём.
C++
1
void Function_1(int* & rVarOne)
справа налево читается: rVarOne является ссылкой на указатель на тип int

ещё раз: функция принимает указатели. и всё.
принимать фукнкция может указатели по значению или по ссылке. здесь она их принимает по ссылке.
0
 Аватар для OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 15:55  [ТС]
>> zim22

Спасибо за ответы. Но как же все-таки передать функции значение, чтобы она принимала указатель на адрес переменной, в которой хранится это значение?
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 16:03
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Но как же все-таки передать функции значение, чтобы она принимала указатель на адрес переменной, в которой хранится это значение?
просто указатель передавай. и ты сможешь менять значение, хранящееся по указателю. но изменение адреса локального указателя не будет влиять на переданный указатель.

C++
1
2
3
4
5
void fcn(int *ptr) {
  *ptr = 99;
}
int r = 33;
fcn(&r);
но здесь я бы лучше определил прототип функции, как принимающее ссылку.
C++
1
void fcn(int &ptr)
0
 Аватар для OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 16:29  [ТС]
>> zim22

Вот, что я имел в виду:

C++
1
2
3
4
5
void Function(int& rVar)
{                        // (int* &pVar) - не проходит :-(
     int* pVar = &rVar;
     // Получаем указатель на адрес переданной переменной.
}
Вызывается:
C++
1
2
int intOne;
Function(intOne);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2010, 16:29
Помогаю со студенческими работами здесь

Вычислить значение функции (значение переменной Х передается в качестве параметра функции)
Написать функцию, которая возвращает вычисленное значение функции. Значение переменной Х передается в качестве параметра функции.

Почему значение не передается в уравнение?
Почему значение &quot;р&quot; не передается как индекс массива в уравнение? #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

file_get_contents(http://) иногда работает иногда нет
Такой код: echo file_get_contents('http://example.com/'); Иногда работает иногда нет, все что связано с коннектом к серверу глючит,...

Запрос иногда работает, а иногда - нет.
Написал запрос вида: data = Request.QueryString('data') sql='SELECT * FROM svch where (((svch.Data)=#' &amp; data &amp; '#));' В урл ввожу...

Вылетают игры на новом процессоре. Иногда с ошибкой, а иногда в BSOD
Здравствуйте. Поставил значит я себе новый процессор. Сменил свой старенький AMD FX4100 на новенький AMD FX8350. Поставил и решил поиграть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru