Указатель против ссылки: разница и сравнение

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

Основные выводы

  1. Указатели хранят адреса памяти переменных или объектов, а ссылки действуют как псевдонимы для существующих переменных.
  2. Указатели могут быть переназначены на разные адреса памяти, а ссылки не могут быть изменены после инициализации.
  3. Указатели требуют явного разыменования для доступа к значению, на которое они указывают, в то время как ссылки могут использоваться напрямую, как исходная переменная.

Указатель против ссылки

Указатель — это переменная, которая получает адрес памяти другой переменной, и ее можно инициализировать в программе несколько раз в зависимости от того, сколько раз это необходимо. Ссылка — это альтернативная программная переменная, и ее можно инициализировать только один раз во всей программе.

Указатель против ссылки

Указатель — это переменная, значением которой является адрес или местоположение другой переменной. Их можно инициализировать в любом месте программы с помощью таких операторов, как '*' и '->'. Переменную-указатель также можно сделать нулевой, и они также поддерживают повторную инициализацию. Базовый тип данных объявляет указатели, за которыми следуют звездочка и имя указателя. 

Ссылка — это переменная с другим именем для уже тонкой программной переменной. Как только ссылочная переменная создана, ее следует инициализировать. Он создает псевдоним другой переменной. Оператор & используется для ссылок на проект. Они создаются по базовому типу данных, за которым следует знак «&» и имя переменной.

Сравнительная таблица

Параметры сравненияУказательID
ОпределениеПеременная, которая содержит адрес памяти другой переменной, называется переменной-указателем.Ссылка — это псевдоним другой переменной, ссылка на нее.
Пустая ссылкаУказатель может быть присвоено нулевое значение.Ссылочной переменной не присваивается нулевое значение. 
СинтаксисТип данных *Имя_указателя; Где Datatype — базовый тип данных, а PointerName — имя объявленного указателя.Тип данных &ReferenceName = AnotherVariable; Где ReferenceName — это имя ссылки, а AnotherVariable — это переменная, на которую ссылаются.
ИнициализацияВозможно создание неинициализированных указателей.Ссылки никогда не могут быть созданы в неинициализированном
Повторная инициализацияПеременные-указатели можно снова и снова инициализировать в программе в соответствии с необходимостью.Ссылочная переменная может быть инициализирована в программе только один раз.
Закрепите это сейчас, чтобы вспомнить позже
Закрепить

Что такое указатель?

В двух словах, указатель — это переменная, которая содержит ячейку памяти или адрес любой другой переменной в программе. Указатели работают в C и C++. Переменная-указатель хранит адресное расположение указывающей переменной. Переменные-указатели могут быть объявлены, а затем могут быть инициализированы переменной, адрес которой должен быть определен.

Читайте также:  SDK против IDE: разница и сравнение

Более того, они имеют ясность, так как целочисленный указатель может содержать только адрес целочисленной переменной. Указатели имеют четкий способ объявления. Например, int *point — это указатель на переменную типа int, а double *ABC — указатель на переменную типа double. Та же концепция применима и к другим типам данных. Следовательно, указатель объявляется следующим образом:

int * переменная-указатель;

После объявления указателя переменная-указатель присваивается переменной, адрес которой необходимо определить. Приведенный выше оператор объявления использует указатель, который будет хранить значение целочисленной переменной. 

переменная-указатель = &a;

Здесь a — целочисленная переменная, используемая на другой стороне программы, адрес которой хранится в указателе переменной. Указатели также дают ответственность за повторную инициализацию. Их значения могут быть изменены в соответствии с их потребностями. 

Что такое ссылка?

Ссылочная переменная — это псевдоним для другой переменной. Другими словами, переменная, которая ссылается на другую существующую переменную программы, рассматривается как ссылочная переменная.

У них есть ограничение в том, что им нельзя присвоить нулевое значение, и их нельзя объявить, они только инициализируются. После создания ссылки доступ к переменной можно получить по имени ссылки или по ее исходному имени. Ссылки инициализируются напрямую. Пример, 

интервал &ref = переменная;

Здесь ref — это имя ссылочной переменной, и оно указывает на переменную var, которая инициализируется в другой части программы. При выводе значений ref и var видно, что ref и var имеют одно и то же значение. Указатели полезны для экономии памяти, потому что, когда они передаются в качестве аргументов функции, они используют исходную ячейку памяти для каждого вызова функции.

Читайте также:  SmartThings против домашнего помощника: разница и сравнение

Ссылочные переменные не обеспечивают повторную инициализацию, они инициализируются и уникальны только один раз. Ссылки не указывают на переменную, сохраняя ее адрес в отдельной ячейке памяти. Проще говоря, ссылочная переменная — это альтернативное имя существующей переменной. Это просто псевдонимы в другом имени переменной, на которую нужно ссылаться.

Основные различия между указателем и ссылкой

  1. На переменную-указатель ссылаются в обход по ссылке, тогда как на ссылочную переменную ссылаются в обход по значению.
  2. Указатели поддерживают возможность указывать на другие указатели, тогда как ссылки лишены этого преимущества. Ссылочная переменная не может указывать на несколько переменных.
  3. Указатели поддерживают использование арифметических операторов и действуют как операнды, тогда как ссылочные переменные не могут быть совместимы с арифметическими операциями.
  4. Размер и адрес памяти переменной-указателя находится в стеке, тогда как ссылочная переменная имеет адрес памяти исходной переменной, но также занимает немного места в стеке. 
  5. Указатели имеют преимущества объявления, тогда как ссылки только инициализируются.
Рекомендации
  1. https://link.springer.com/article/10.1023/A:1015362608943
  2. https://dl.acm.org/doi/pdf/10.1145/99583.99599
точка 1
Один запрос?

Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️

Сандип Бхандари
Сандип Бхандари

Сандип Бхандари имеет степень бакалавра вычислительной техники Университета Тапар (2006 г.). Имеет 20-летний опыт работы в сфере технологий. Он проявляет большой интерес к различным техническим областям, включая системы баз данных, компьютерные сети и программирование. Подробнее о нем можно прочитать на его био страница.

12 комментариев

  1. Я ценю подробное объяснение указателей и ссылок. Это отличный ресурс для тех, кто изучает программирование.

  2. В C и C++ есть основы, но очень важно понимать указатели и ссылки, что может сбить с толку новичков.

  3. Понимание указателей и ссылок имеет важное значение. Эта статья предлагает всестороннее понимание этих концепций.

  4. C и C++ являются наиболее часто используемыми языками программирования, поскольку это основные двери для новичков в мир программирования. Указатели и ссылки являются одними из наиболее полезных средств, предоставляемых этими языками. Указатели используются в C и C++, а ссылки поддерживаются в C++, Python и других языках.

  5. Указатели и ссылки играют жизненно важную роль в программировании. Приятно найти информацию об их различиях.

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!