Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
1

Указатели и Ссылки

13.03.2012, 15:53. Просмотров 618. Ответов 8
Метки нет (Все метки)

извеняюсь,но никак не могу понять.
C++
1
2
3
4
5
6
7
int sum(int* inLeft, int* inRight)
{
    if(inLeft == inRight)
        return *inLeft;
    else
        return *inRight + sum(inLeft, --inRight);
}
1) строка int sum(int* inLeft, int* inRight) -тут указателем является тип инт.правильно?
2)if(inLeft == inRight) -почему без знака указателя-*?что произошло если бы было так:if(*inLeft == *inRight)?
3)почему звездочка стоит рядом с инт(int sum(int* inLeft, int* inRight)),а тут - *inLeft;
4)почему return *inRight + sum(inLeft, --inRight);-*inRight со звездой,а эти без:inLeft, --inRight?
соответсвенно что было бы если бы были со звездочками?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 15:53
Ответы с готовыми решениями:

Ссылки и указатели
Всем привет. Совсем запутался с ссылками и указателями. Помогите решать...

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

Указатели и ссылки
Экспериментируя с указателями пришел к вот таким выводам: int a;...

Указатели и ссылки c++
Здравствуйте! Не могли бы вы объяснить как можно использовать ссылки и...

Ссылки и указатели
Добрый день, не могу понять чем помогают при использовании указатели и ссылки?...

8
Duha666
51 / 51 / 19
Регистрация: 10.03.2012
Сообщений: 138
13.03.2012, 16:16 2
1) Тут указателем на тип int являются inLeft, inRight
2) Первый вариант - сравнение указателей(сравнение указателей на равные по значению переменные даст false), второй - по значению на указателях
C++
1
2
3
4
5
6
a = 4;
b = 4;
x = &a;
y = &b;
x != y; // указатели на разные переменные
*x == *y // равные значения на указателях
3) Да пофиг где, можете даже так:
C++
1
int * inLeft
4) Потому что мы передаем значение когда пишем *inRight, а когда inRight - все-ещё адрес

Наверное, так проще будет понять:
У вас есть номера двух страниц книги(inLeft, inRight). Вы можете узнать, что находится на странице книги(*inLeft или *inRight). Вы можете сравнить номера страниц: inLeft == inRight(к вопросу №2). А можете сравнить то, что находится на этих страницах: *inLeft == *inRight. Вы можете даже уменьшить известный номер страницы: (--inRight в коде)
1
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
13.03.2012, 16:29  [ТС] 3
получается если я хочу изменить переменную,то надо ставить *?Допустим int*inRight=1;
А если напишу int inRight=1 то єто ошибка,т.к inRight єто адрес?
спасибо.какбэ понял указатели
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:32 4
Изменить переменную через указатель на нее:
int x = 1;
int a = &x;
*a = 1; // верно
a = 2; // в данном случае не верно, изменяется значение указателя а не переменной x
x = 3; // верно
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
13.03.2012, 16:33 5
Если Вы передается по ссылке, то копии переменной не создается.
1
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
13.03.2012, 16:36  [ТС] 6
Изменить переменную через указатель на нее:
int x = 1;
int a = &x;
*a = 1; // верно
a = 2; // в данном случае не верно, изменяется значение указателя а не переменной x
x = 3; // верно

на сколько я понимаю,тут используются уже и Ссылка?
C++
1
2
int x = 1;
int a = &x;
а ссылка на х?
а нет ..int a = &x; это взятие адресса х.точно
1
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:44 7
Поправка в моем коде: не int a = &x;, а int *a = &x;
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
13.03.2012, 16:50 8
Цитата Сообщение от lazybiz Посмотреть сообщение
int a = &x;
*a = 1; // верно
Какое это верно?
2
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:54 9
Цитата Сообщение от go Посмотреть сообщение
Какое это верно?
Цитата Сообщение от lazybiz Посмотреть сообщение
Поправка в моем коде: не int a = &x;, а int *a = &x;
Так понятней?
0
13.03.2012, 16:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 16:54

Указатели и ссылки
Собственно, не могу до конца осознать как это работает, вот пример из...

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

Указатели и ссылки [С++]
Всем привет. я тут программу делаю. Цель: определить,принадлежит ли точка...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru