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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Построение UML http://www.cyberforum.ru/cpp-beginners/thread250365.html
Можно ли создать диаграмму зависимостей UML из существующего проекта VS 2005?
C++ написать программу если можно с объяснением!!!!!!!! http://www.cyberforum.ru/cpp-beginners/thread250357.html
C++ класс эллипс
ПОМОГИТЕ ПОЖАЛУЙСТА, начала изучать с++ столкнулась с такой вот задачей...... Определить класс эллипс, продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, передвинуть эллипс, изменить радиусы эллипса. может у кого есть примеры для...
C++ Сложение, вычитание, умножение
Доброго времени суток! Помогите с задачей: Написать функцию, которая складывает, вычитает или умножает два целых числа и возвращает результат (операнды и знак операции +, – или * — параметры функции). Заранее Спасибо! PS есть наработки, но чёт не так, выдаёт ошибки: num1.cpp #include<iostream>
C++ Преобразование массива с использованием функции http://www.cyberforum.ru/cpp-beginners/thread250350.html
На языке С написать с помощью функции программу. Задание: Дана матрица А и вектор B. Из сумм элементов строк матрицы сформировать вектор C. Если минимальный элемент вектора C кратен минимальному элементу вектора B, то из положительных элементов матрицы А сформировать вектор D и упорядочить его по возрастанию. Иначе матрицу А упорядочить по возрастанию. Заранее благодарен...
C++ указатель(?) на массив ситуация: мне нужно, чтобы в main был определён двумерный массив, а класс мог бы его использовать: class map { unsigned short int *field; bool isVisiable; public: map(unsigned short int ???); void show (); void hide (); подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.06.2011, 06:20     Ссылки и указатели
Цитата Сообщение от xKirillx Посмотреть сообщение
Добрый день. Возможно было. В чем существенная разница между передачей данных в функцию по ссылке или указателю. В каких случаях вы бы что рекоммендовали. Заранее спасибо.
Разница в том, что адрес ссылки нельзя поменять.
C++
1
2
3
char a="dfsasdf";
const char *p="dfsasdf"; // Константой является не только значение указателя, но это ещё и указатель на константу
char &b=a;// А здесь константа - только адрес, но само данное - переменная
. Имеешь ты адрес элемент линейного списка, надо перебрать список, с указателем это можно сделать, а со ссылкой нет:
C++
1
2
3
4
5
6
7
8
for (; list->next!=null; list->next) // Если list - указатель, то такой цикл допустим
{
 ...
}
for (; list.next!=null; list.next) // Даже если list - ссылка, то такой цикл всё равно не допустим
{
 ...
}
, поэтому при передаче сслыки, её придётся привести к указаетелю. Для массивов тоже существует арифметика указателей, но нет арифметики ссылок. Но в том случае, если один и тот же правметр используется для передачи адреса и в функцию, и из неё, различие не актуально: всё равно придётся использовать указатель на указатель, а его уже можно заменить ссылкой на указатель. Ссылка также применима и в том случае, если требуется вернуть не адрес, а значение по готовому адресу. Синтаксически же ссылка удобнее указателя.
C++
1
2
int a;
void f(int *a);
для вызова придётся использовать
C++
1
f(&a);
.
C++
1
2
int a;
void f(int &a);
, а здесь достаточно
C++
1
f(a);
.

Добавлено через 4 минуты
Цитата Сообщение от bigredcat Посмотреть сообщение
Вобще не встречал в описании языка C++ упоминания, что ссылка это указатель
А что на самом деле хранится в ссылке? Разве не адрес?
 
Текущее время: 10:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru