Разлика между C ++ Reference спрямо Pointer

Въпреки че C ++ препратката към показалеца изглежда е сходна, има съществена разлика между двете C ++ Reference спрямо Pointer. Референтната променлива може да се каже като друго име на съществуваща променлива. След като тази променлива се инициализира, името на променливата може да се използва за препращане към друга променлива. Показателите, от друга страна, са променливи, които съхраняват адреса на променлива. Както всяка променлива, те се декларират първо и след това адресът на всяка променлива може да бъде запазен в тях. Нека да разгледаме подробно разликите между C ++ Reference vs Pointer, както е посочено по-долу.

Сравнение от главата до главата между C ++ Reference и Pointer (Инфографика)

По-долу е горната 7 разлика между C ++ Reference и Pointer

Ключови разлики между C ++ Reference спрямо Pointer

И двете C ++ Reference vs Pointer са популярни решения на пазара; нека да обсъдим някои от основните разлики между C ++ Reference и Pointer:

Основната разлика между C ++ Reference спрямо Pointer е, че една се отнася до друга променлива, докато последната съхранява адреса на променлива. Позоваванията не правят промяна в оригиналната променлива, докато ако показалецът е променен, това влияе на оригиналната променлива. Референцията трябва да се инициализира при деклариране, докато не е необходимо да се инициализира указател, след като е деклариран. Може да се създаде масив от указатели, докато масив от препратки не може да бъде създаден. Нулева стойност не може да бъде присвоена на референтен, но може да бъде присвоена на показалец.

C ++ Справка спрямо Таблица за сравнение на показалеца

Основното сравнение между C ++ Reference и Pointer се обсъжда по-долу:

Основата на сравнението между C ++ Reference и PointerC ++ Справкапоказалка
ПроменливиРеференцията може да се каже като псевдоним на съществуваща променлива. Основната употреба на тази променлива е работа като параметър, който работи като препратка чрез препратка. Това се предава на функция. Функцията, на която се предава, работи върху оригиналната променлива, вместо върху копието в пропуск по стойност. Промените, направени вътре във функцията, ще бъдат отразени и отвън.Променливите на показалеца са променливи, които съхраняват адреса. За разлика от обичайните променливи, които имаме като int, double и char, тя съхранява адреси на паметта. За улесняване на програмирането възниква необходимостта от тази променлива. Това е променлива, която може да съхранява стойност на определен тип.
декларацияДекларацията на C ++ референтна променлива се извършва чрез добавяне на символ "&" пред променлива. Когато се използва с израз, това означава, че работи като адрес на оператор. Използва се за предоставяне на друго име на съществуваща променлива.
Синтаксис:
въведете & newName = съществуващо име ;
// или
въведете & newName = съществуващо име ;
// или
въведете & newName = съществуващо име ;
Например:
/ * Тестова референтна декларация и инициализация * /
#include
използване на stdpace пространство на имената;
int main () (
име на низ = „Priya“; // Обявете променлива на низ, наречена име
string & refName = име; // Деклариране на препратка (псевдоним) към името на променливата
// И refName, и име се отнасят до една и съща стойност на „Priya“
cout << име << endl; // Тя отпечатва стойността на променливата „Priya“
cout << refName << endl; // Отпечатва стойност на референтната стойност „Priya“
Сега променете стойността на Name
refName = „Каришма“; // Преназначаване на нова стойност на refName
cout << refName << endl;
cout << име << endl; // Стойността на числото също се променя „Каришма“
name = „Snehal“; // Преназначаване на нова стойност на име
cout << namer << endl;
cout << refName << endl; // Стойността на refName също променя „Snehal“
)
Това означава, че стойностите на референтната променлива могат да бъдат променени в оригинал и копие на променливата.
Преди да използвате указател навсякъде в програмата, той трябва да бъде деклариран предварително. За деклариране на указател и уведомяване на системата, че е указател, променлива е префиксна с '*'. Показалецът е придружен с тип данни, който може да бъде int или double и т.н.
Синтаксис:
тип * pntr ; // Обявете променлива на указателя, наречена pntr, като указател от тип
// или
тип * pntr ;
// или
тип * pntr ;
Например:
int * newPtr; // Обявете променлива на указател, наречена newPtr, сочеща към int (int показалец)
Този показалец ще съдържа адреса. Този адрес съдържа стойност int.
двойно * newdPtr; // Деклариране на двоен указател
* Показва, че указател се декларира и не действа като оператор.
ПренасочванеРеферентната променлива не може да бъде преназначена.
Пример:
int x = 5;
int y = 6;
int & r = x;
Показалецът може да бъде преназначен и това свойство е полезно, когато разработчикът внедрява структури от данни като свързани списъци, дървета и т.н.
Пример:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
Адрес на паметтаРеферентната променлива споделя същия адрес като оригиналната променлива. Тези препратки могат да бъдат предавани на различни функции, могат да се съхраняват в различни класове и т.н. Референцията никога не сочи нова променлива, докато старата не бъде изтрита или излезе извън обхвата.Указателят има собствен адрес на паметта и го съхранява в стека. Показалецът е независима променлива и може да има нови стойности, присвоени на себе си.
Нулева стойностРеференцията не може да има присвоена нулева стойност.Показалецът може да има директно зададена нулева стойност.
АргументиРеферентната променлива може да бъде отнесена по байпас по стойност. Тук аргументите се предават по стойност на функциите. Прави се клон и се изпраща към функцията, използвайки го. Промените, направени в копието, не оказват влияние върху оригиналната променлива.Когато желаем да променим оригиналното копие, тогава това може да стане чрез предаване на указател на обекта във функцията. Това е известно като справка за справка.
Кога да използватеПрепратките имат косвен достъп до променлива. Помислете следния пример:
enum ден
(
Неделя понеделник, …
);
Ако определим променлива
ден х;
И искаме да претоварим оператор до изявлението, след което можем да напишем както по-долу:
ден и оператор ++ (ден и г)
(
d = (ден) (d + 1);
връщане г;
)
Накратко, това може да се използва във функционални параметри и референтни типове.
Използването на указатели е без предварителна декларация.
ден * оператор ++ (ден * г);
Това може да се използва за прилагане на структури от данни и аритметични операции на показалеца.

Заключение - C ++ Справка срещу Pointer

С C ++ Reference vs Pointer е трудно да се работи, но те подобряват в голяма степен ефективността на програмата. И двамата C ++ Reference vs Pointer имат свои собствени приложения и служат на собствените си цели. Можете да използвате указатели, когато искате да внедрите структури от данни и алгоритми, докато препратките, когато искате да използвате функции и параметри с типове връщане.

Препоръчителен член

Това е ръководство за основните разлики между C ++ Reference спрямо Pointer. Тук също обсъждаме ключовите разлики между C ++ Reference и Pointer с инфографиката и таблицата за сравнение. Може да разгледате и следните статии, за да научите повече -

  1. Python vs C ++ разлики
  2. Производителност C срещу C ++ - Най-добри разлики
  3. МонгоДБ срещу Касандра
  4. Mobx срещу Redux
  5. C ++ Vector vs Array: Топ разлики
  6. MongoDB срещу DynamoDB: Функции
  7. MongoDB срещу SQL: Какви са функциите
  8. C срещу C #: Функции