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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
#1

Ссылки и адреса - C++

18.05.2010, 09:31. Просмотров 545. Ответов 3
Метки нет (Все метки)

Вот, где лучше всего использовать адреса и ссылки? Просто не много не понятня для чего это все.
Вот например эту запись
C++
1
2
int mas;
int* pmas=&mas
Чесно говоря, даже не понятно всего удобства. Зачем делать переменную *pmas если при обращении к ней или присваивании ей значения автоматически оно присваивается и mas...
Буду благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2010, 09:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылки и адреса (C++):

Адресное пространство, адреса, ссылки - C++
Добрый вечер. Я новичок в программировании и стал недавно читать туториалы по ссылкам. В общем, прилагаю цитату с одного сайта: ...

Понимание адреса, ссылки и указателя - C++
Гм... Конечно, стремно создавать подобную тему, однако, уж очень захотелось понять все это дело. Правда сколько раз ни пытался - не...

Как снять константность ссылки для передачи в функцию адреса - C++
Здравствуйте. Есть функция с сигнатурой: void func(const tm & _tm); В теле функции надо вызвать: time_t _mkgmtime( struct tm*...

Почему при присваивании адреса массива не ставится знак '&' получения адреса - C++
int main() { int a = { 2, 3 }; int* b; b = a; //Почему при присваивании адреса массива не ставится знак '&' получения адреса. ...

Зачем нужны rvalue ссылки, если есть универсальные ссылки - C++
Читаю книгу Скотта Мэйерса... Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть...

адреса - C++
привет всем есть программа 1 /* контроль адресов */ 2 #include <stdio.h> 3 main( ) 4 { int pooh = 2, bah = 5; 5 printf("...

3
-Xeon-
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 26
18.05.2010, 10:15 #2
PodOnoK, в данной записи у тебя есть обычная переменная int mas и указатель int* pmas, далее у тебя указателю pmas присваевается адрес переменной mas (у тебя написанно int* pmas=&mas - это инициализирует указатель адрессом по которому хранится mas, это дело равносильно если написать так: int* pmas; pmas = &mas; // в последнем инициализируем указатель). Ссылок сдесь нет, & - операция изъятия адресса.

Добавлено через 7 минут
PodOnoK, ссылки объявляются так int &pmas = mas; // это ссылка. Ссылка это равносильно второму имени для какойто переменной или объекта. Есть ещё одно но: ссылка должна быть сразу инициализирована, т.е. написать так: int mas; int &pmas; pmas = &mas; не верно!

Добавлено через 2 минуты
Удобство использования указателей - это динамические массивы, строки, списки и т.д., всё это бес указателей не может существовать. Ссылки применяются например при перегрузки операторов (С++).
1
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,484
18.05.2010, 10:31 #3
Указатели НЕЗАМЕНИМЫ в том случае, если ты написал каку-то функцию и в ходе исполнения этой функции ДОЛЖНО измениться значение глобальной переменной
(Если такая переменная одна, то можно сделать, чтобы функйция возвращала её значение, а если две или больше, то только через указатели)

Для этого в эту функцию необходимо передать оджним из параметров адрес этой переменной, в теле функции его разыменовать и всё будет ОК
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <windows.h>
 
 
void funktsia (int* uk) {
 *uk= *uk+ 100;
}
 
 
 
 
int main () {
 int per= 0;
 
 //Вот этой переменной необходимо изменить значение ВХОДЕ ВЫПОЛНЕНИЯ ФУНКЦИИ funktsia
 int per_1= 0;
 //Щас оно равно нулю
 printf ("per_1= %d\n", per_1);
 
 //Для этого пишем так:
 int* ukaz= &per_1;
 funktsia (ukaz);
 
 //(Можно бло бы написать funktsia (&per);  эффект был бы тот же)
 
 printf ("per_1= %d\n", per_1);
 system ("pause");      
 
}
Добавлено через 1 минуту
ПРрошу прощения, надо так:
//(Можно бло бы написать funktsia (&per_1); эффект был бы тот же)
1
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
19.05.2010, 14:45 #4
А если использовать ссылку то всё же так:

C++
1
2
3
4
5
void funktsia (int& uk) {
 uk= uk+ 100;
}
//вызов в мейне 
funktsia (per_1);
0
19.05.2010, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2010, 14:45
Привет! Вот еще темы с ответами:

адреса - C++
здравствуйте! нужно &quot;Вывести на экран 25 случайных чисел, находящихся в диапазоне от –100 до 100. Затем найти и вывести на экран номера...

IP адреса. - C++
Ребят всем привет.Требуется прочитать из реестра i все ip адреса компьютера. С этим проблем нет,но в разделе services лежит 5 ключей и в...

Получение адреса - C++
Есть следующая строка: long int array; Что означает, если мы напишем следующее: (char*)Arr; Мы получим начало адреса...

Кодировка IP адреса - C++
Помогите пожалуйста закодировать IP адрес в с++:help:


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

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

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