Форум программистов, компьютерный форум CyberForum.ru

Указатели и Ссылки - C++

Восстановить пароль Регистрация
 
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
13.03.2012, 15:53     Указатели и Ссылки #1
извеняюсь,но никак не могу понять.
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?
соответсвенно что было бы если бы были со звездочками?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 15:53     Указатели и Ссылки
Посмотрите здесь:

Указатели и ссылки C++
C++ Указатели и ссылки
C++ Указатели и ссылки [С++]
Ссылки vs Указатели C++
Указатели и ссылки? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 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 в коде)
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
13.03.2012, 16:29  [ТС]     Указатели и Ссылки #3
получается если я хочу изменить переменную,то надо ставить *?Допустим int*inRight=1;
А если напишу int inRight=1 то єто ошибка,т.к inRight єто адрес?
спасибо.какбэ понял указатели
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:32     Указатели и Ссылки #4
Изменить переменную через указатель на нее:
int x = 1;
int a = &x;
*a = 1; // верно
a = 2; // в данном случае не верно, изменяется значение указателя а не переменной x
x = 3; // верно
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 16:33     Указатели и Ссылки #5
Если Вы передается по ссылке, то копии переменной не создается.
RASHFor
6 / 6 / 0
Регистрация: 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; это взятие адресса х.точно
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:44     Указатели и Ссылки #7
Поправка в моем коде: не int a = &x;, а int *a = &x;
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 16:50     Указатели и Ссылки #8
Цитата Сообщение от lazybiz Посмотреть сообщение
int a = &x;
*a = 1; // верно
Какое это верно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 16:54     Указатели и Ссылки
Еще ссылки по теме:

Указатели и ссылки C++
Указатели и ссылки C++
Указатели и ссылки C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
13.03.2012, 16:54     Указатели и Ссылки #9
Цитата Сообщение от go Посмотреть сообщение
Какое это верно?
Цитата Сообщение от lazybiz Посмотреть сообщение
Поправка в моем коде: не int a = &x;, а int *a = &x;
Так понятней?
Yandex
Объявления
13.03.2012, 16:54     Указатели и Ссылки
Ответ Создать тему
Опции темы

Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru