powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться
3 сообщений из 3, страница 1 из 1
Помогите разобраться
    #33997724
wehicla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте.
Читаю интересную книгу тов. Страуструпа про С++. Почти осилил 1-ю главу(книга трудна для меня).
Трудности с указателями. А точнее приблизительно с таким:
int& elem(int i) { return v ; } или ещё
int& operator[](int); Интересует перевод этих строк на русско-абстрактный.
Понимаю что, например: int& something, здесь something - ссылка. А что такое ссылка(к сожалению толковых книг нет).
И еще интересует почему:
int& something; и
int &something; для компилятора не отличаются.
Если не сложно - мыльте wehicla@narod.ru.
До свидания.
...
Рейтинг: 0 / 0
Помогите разобраться
    #33998036
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем функцию.
int sub( int a )
{
...
}

передача по значению:
предположим есть переменная int i имеющая значение 10. передача по значению
buf = sub( a );
равносильна buf = sub( 10 );
также стоит заметить, что переменную a внутри sub изменить никак нельзя.
например: вернуть число, увеличенное в 4 раза:
Код: plaintext
1.
2.
3.
4.
5.
int sub( int a )
{
a = a /  2 ; // здесь создается локальная копия аргумента, и вы не портите источник
return a* 8 ;
}
и
Код: plaintext
1.
int i =  10 ;
buf = sub( i );
даст:
buf = 40;
i = 10;

Передача по адресу.
вы передате теперь не значение переменной, а адрес, где она находится.
пусть есть функция int sub( int* a )
int i = 10;
buf = sub( &i );
равносильна buf = sub( <адрес переменной i> );
также стоит заметить, что переменную a внутри sub изменить можно, просто записав по адресу какое-нибудь число.
например: вернуть число, увеличенное в 4 раза, при этом пожелить агрумент на 2:
Код: plaintext
1.
2.
3.
4.
5.
int sub( int* a )
{
*a = *a /  2 ;
return (*a)* 8 ;
}
и
Код: plaintext
1.
int i =  10 ;
buf = sub( i );
даст:
buf = 40;
i = 5;

Передача по ссылке: вы пишете передачу, будто передача идет по ссылке, а фактически передача идет по указателю:
Код: plaintext
1.
2.
3.
4.
5.
int sub( int& a )
{
a = a /  2 ;
return a* 8 ;
}
и
Код: plaintext
1.
int i =  10 ;
buf = sub( i );
даст:
buf = 40;
i = 5;
...
Рейтинг: 0 / 0
Помогите разобраться
    #33999597
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылка - это разименованный константный указатель без возможности проведения с ним операций адресной арифметики (потому что он константный). (Константный - в том смысле, что АДРЕС поменяться не может, а не в том смысле, что не может поменяться содержимое по этому адресу.)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]