Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
randy92
7 / 7 / 4
Регистрация: 23.04.2014
Сообщений: 59
#1

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

20.05.2014, 13:09. Просмотров 956. Ответов 9
Метки нет (Все метки)

Посоветуйте статью, видео или книгу по указателям и ссылкам в C++, где все доходчиво разъяснено с реальными примерами. Уже много чего прочитал и посмотрел и понимаю, но вот как доходит до использования в своих программах - путаюсь и теряюсь, предпочитаю вообще не использовать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 13:09
Ответы с готовыми решениями:

Подскажите, пожалуйста, учебник/статью (или что-то в этом роде) про классы
Подскажите пожалуйста, где можно найти учебник/статью (или что-то в этом роде)...

Пояснить про указатели и ссылки
есть переменное и указатель.. Значение нашей переменной случайный адрес, Как...

Расскажите популярно про ссылки и указатели
Помогите разобраться со ссылками и указателями на различные объекты. Запутался...

Что нужно знать про указатели и ссылки?
Привет, завтра кр по теме указатели и ссылки в с++, пишите сюда что необходимо...

Форумчани, подскажите статью
Здравствуйте, можете подсказать статью (хорошую), в которой подробно будут...

9
YouDoItWrong
47 / 47 / 24
Регистрация: 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 - и т.д. страницы.
1
Croessmah
++Ͻ
14488 / 8269 / 1553
Регистрация: 27.09.2012
Сообщений: 20,312
Записей в блоге: 3
Завершенные тесты: 1
20.05.2014, 13:17 #3
Цитата Сообщение от randy92 Посмотреть сообщение
и теряюсь
что не понятно?
Цитата Сообщение от randy92 Посмотреть сообщение
или книгу по указателям и ссылкам в C++
в любой книге этому уделяется внимание
0
SatanaXIII
20.05.2014, 13:43
  #4

Не по теме:

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

0
Croessmah
20.05.2014, 13:50
  #5

Не по теме:

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

0
Denis_Zurin
3 / 3 / 8
Регистрация: 19.05.2014
Сообщений: 84
20.05.2014, 14:45 #6
Лучший ответ Сообщение было отмечено randy92 как решение

Решение

Указатель - это адрес переменной или функции, место, где оно находится в памяти компьютера. Ряд структур данных (списки, деревья и т.д.) требуют указатели. Например, в однонаправленном списке нужно хранить данные текущего элемента и адрес следующего элемента:
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++).
1
randy92
7 / 7 / 4
Регистрация: 23.04.2014
Сообщений: 59
20.05.2014, 15:06  [ТС] #7
Вот не понятно, например, почему нельзя проще: использовать сразу адрес на переменную, не присваивая его указателю? вместо *ptr = &var1 писать просто &var1 везде, где это требуется?
0
HighPredator
5677 / 1996 / 721
Регистрация: 10.12.2010
Сообщений: 5,745
Записей в блоге: 3
20.05.2014, 16:02 #8
Цитата Сообщение от randy92 Посмотреть сообщение
почему нельзя проще: использовать сразу адрес на переменную, не присваивая его указателю?
Цитата Сообщение от Denis_Zurin Посмотреть сообщение
Указатель - это адрес переменной
Читайте внимательно.
0
randy92
7 / 7 / 4
Регистрация: 23.04.2014
Сообщений: 59
20.05.2014, 18:50  [ТС] #9
Читайте внимательно.
Это понятно, что указатель - адрес переменной. Но ведь указатель имеет вид *, а адрес - &. Так вот я спрашиваю: почему нельзя везде ставить &? мы же по сути адрес и рассматриваем
0
HighPredator
5677 / 1996 / 721
Регистрация: 10.12.2010
Сообщений: 5,745
Записей в блоге: 3
20.05.2014, 21:29 #10
Цитата Сообщение от randy92 Посмотреть сообщение
почему нельзя везде ставить &?
Везде это где конкретно?
0
20.05.2014, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 21:29

Можете пожалуйста дать статью или видео урок про ключевые слова в конце функций?
Можете пожалуйста дать статью или видео-урок про ключевые слова в конце...

Подскажите хорошую среду для С++
Всем добрый вечер. Друзья, я вот на ubuntu пересел, и если на Си пишу в geany,...

Подскажите хорошую среду с компилятором
Тему " Бесплатные среды (IDE) .. " читал, спасибо, но я переспрошу. ...


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

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

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