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

Подскажите хорошую статью про указатели и ссылки - C++

Восстановить пароль Регистрация
 
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
20.05.2014, 13:09     Подскажите хорошую статью про указатели и ссылки #1
Посоветуйте статью, видео или книгу по указателям и ссылкам в C++, где все доходчиво разъяснено с реальными примерами. Уже много чего прочитал и посмотрел и понимаю, но вот как доходит до использования в своих программах - путаюсь и теряюсь, предпочитаю вообще не использовать.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
20.05.2014, 13:16     Подскажите хорошую статью про указатели и ссылки #2
http://channel9.msdn.com/Events/Goin...rne-Stroustrup

Добавлено через 3 минуты
Bjarne Stroustrup - The C++ Programming Language - 2013 44 - и т.д. страницы.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
20.05.2014, 13:17     Подскажите хорошую статью про указатели и ссылки #3
Цитата Сообщение от randy92 Посмотреть сообщение
и теряюсь
что не понятно?
Цитата Сообщение от randy92 Посмотреть сообщение
или книгу по указателям и ссылкам в C++
в любой книге этому уделяется внимание
SatanaXIII
20.05.2014, 13:43
  #4

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
в любой книге этому уделяется внимание
Значит я невнимательно читал некрономикон. Х)

Croessmah
20.05.2014, 13:50
  #5

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Значит я невнимательно читал некрономикон. Х)
тогда нужно внимательно прочитать книгу "Различные логические выводы, в зависимости от раздела форума"

Denis_Zurin
2 / 2 / 8
Регистрация: 19.05.2014
Сообщений: 84
20.05.2014, 14:45     Подскажите хорошую статью про указатели и ссылки #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Указатель - это адрес переменной или функции, место, где оно находится в памяти компьютера. Ряд структур данных (списки, деревья и т.д.) требуют указатели. Например, в однонаправленном списке нужно хранить данные текущего элемента и адрес следующего элемента:
C
1
2
3
4
5
typedef struct tagList
{
  int x;
  struct tagList *next;
} List;
Объявление TYPE* обозначает указатель на тип TYPE. Такое же обозначение используется и для массивов. Массив в C/C++ является указателем на несколько последовательно идущих элементов. Для массивов дополнительно поддерживается арифметика указателей - если указатель указывает на элемент массива, то с помощью операций ++/--/+=/-= можно переходить к следующим и предыдущим элементам.

Операция &varname возвращает адрес переменной, который можно записать в указатель. Для массивов и функций & не нужно, достаточно просто указать имя (а вот для структур - нужно). Операция *ptr позволяет получить доступ к значению по адресу, который хранится в указателе ptr. Например:
C
1
2
3
4
5
6
int n = 2, m = 3;
int *p;
p = &n;
*p = 200;
p = &m;
*p = 300;
Для указателей на функции используется такой синтаксис:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// указатель на функцию, принимающую (int x, int y) и возвращающую int.
int (*pfunc)(int x, int y);
// функция
int summ(int x, int y)
{
  return x + y;
}
void main()
{
  // установить указатель на функцию
  pfunc = summ;
  // вызываем функцию, хранящуюся в указателе ptr
  printf("%d", pfunc(2, 3));
}
В Си указатели можно использовать, когда нужно передать параметры в функцию не по значению, а по ссылке (аналог var-параметров в Паскале и ref/out в C#). Т.е. функция может изменять их значения. Пример - функция, меняющая значения двух переменных целого типа:
C
1
2
3
4
5
6
void swap(int *x, int *y)
{
  int temp = *x;
  *x = *y;
  *y = temp;
}
Вызывается функция так: swap(&n, &m);
В C++ добавили синтаксический сахар для таких параметров-указателей и назвали это ссылками. С помощью ссылок функцию swap можно записать так:
C
1
2
3
4
5
6
void swap(int &x, int &y)
{
  int temp = x;
  x = y;
  y = temp;
}
И вызывать как обычно: swap(n, m);
Т.е. это передача параметров по ссылке, как var в Паскале. Обычно используется для параметров-объектов.
Если остались еще вопросы - см. учебники (Кернигана и Ритчи по Си, и Страуструпа по C++).
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
20.05.2014, 15:06  [ТС]     Подскажите хорошую статью про указатели и ссылки #7
Вот не понятно, например, почему нельзя проще: использовать сразу адрес на переменную, не присваивая его указателю? вместо *ptr = &var1 писать просто &var1 везде, где это требуется?
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,107
Записей в блоге: 3
20.05.2014, 16:02     Подскажите хорошую статью про указатели и ссылки #8
Цитата Сообщение от randy92 Посмотреть сообщение
почему нельзя проще: использовать сразу адрес на переменную, не присваивая его указателю?
Цитата Сообщение от Denis_Zurin Посмотреть сообщение
Указатель - это адрес переменной
Читайте внимательно.
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
20.05.2014, 18:50  [ТС]     Подскажите хорошую статью про указатели и ссылки #9
Читайте внимательно.
Это понятно, что указатель - адрес переменной. Но ведь указатель имеет вид *, а адрес - &. Так вот я спрашиваю: почему нельзя везде ставить &? мы же по сути адрес и рассматриваем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 21:29     Подскажите хорошую статью про указатели и ссылки
Еще ссылки по теме:

Пояснить про указатели и ссылки C++
Форумчани, подскажите статью C++
C++ Подскажите хорошую книгу\самоучитель по С++ или С#

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

Или воспользуйтесь поиском по форуму:
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,107
Записей в блоге: 3
20.05.2014, 21:29     Подскажите хорошую статью про указатели и ссылки #10
Цитата Сообщение от randy92 Посмотреть сообщение
почему нельзя везде ставить &?
Везде это где конкретно?
Yandex
Объявления
20.05.2014, 21:29     Подскажите хорошую статью про указатели и ссылки
Ответ Создать тему
Опции темы

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