Разлика между масив и показалец

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 15 Може 2024
Anonim
🇷🇸 Belgrade’s MASSIVE EASTERN City GATE | BRUTALIST Architecture in Belgrade, SERBIA | Travel Serbia
Видео: 🇷🇸 Belgrade’s MASSIVE EASTERN City GATE | BRUTALIST Architecture in Belgrade, SERBIA | Travel Serbia

Съдържание


Между масива и показалеца съществува тясна връзка. Показалецът може да се използва за достъп до елементите на масива, като достъпът до целия масив с помощта на аритметиката на показалеца прави достъпа по-бърз. Има основна разлика между показалец и масив, т.е. масивът е съвкупност от променливи от подобен тип данни, докато показалецът е променлива, която съхранява адреса на друга променлива. Има някои други разлики между масив и показалец, които са разгледани по-долу в сравнителната диаграма.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеArrayпоказалка
декларация// В C ++
въведете var_name;
// В Java.
тип var-name;
var_name = нов тип;
// В C ++
тип * var_name;
работнатаСъхранява стойността на променливата на хомогенен тип данни.Съхранявайте адреса на друга променлива от същия тип данни като типа данни на променливите на показалеца.
ПоколениеМоже да се генерира масив от указатели.Може да се генерира указател към масив.
Поддръжка на JavaПодкрепете концепцията за масив.Не поддържа указатели.
съхранениеНормалният масив съхранява стойностите на променлива, а масивът на показалеца съхранява адреса на променливите.Указателите са специално проектирани да съхраняват адреса на променливи.
КапацитетМасивът може да съхранява броя на елементите, споменати в размера на променливата на масива. Променливата на показалеца може да съхранява адреса на само една променлива наведнъж.


Определение на Array

Масивът е съвкупността от елементи от един и същ тип данни и всички тези елементи се препращат с общо име, което е името на променлива на масив. Достъп до определен елемент от масива се осъществява чрез достъп до специфичния индекс на този масив, където се съхранява този елемент. Масивите могат да бъдат едномерен масив, двумерен масив или многоизмерен масив. Може да се генерира и масив от указатели, т.е. масив, съдържащ цялата променлива като променлива на показалеца. В „C ++“ масивите са разпределени статично, докато в „Java“ масивите се разпределят динамично.

// В C ++ тип var_name; // В Java. тип var-name; var_name = нов тип;

Тук 'type' обозначава типа данни на променлива на масива, 'var_name' обозначава името, дадено на променливата на масива, 'size' означава капацитета на променливата на масива, т.е. колко елемента от 'type' могат да се съхраняват в тази променлива на масива , Има два метода за достъп до масив, първи „аритметична показалка“ и втори „индексиране на масив“, от които „аритметиката на показалеца“ е по-бърза.


// достъп с помощта на указател аритметичен Void display_array (int * S) {while (* s) {cout (<< "стойността е" << * s); * Е ++; }}

Използването на „arithmetic pointer“ би работило по-бързо в сравнение с „индексиране на масив“, т.е. достъп до променлива на масива, използвайки нейния индекс. Ако трябва да предадете масив от указатели във функция, това може да се извърши, като използвате същия метод, който използвате, за да предадете нормален масив, т.е. директно извикайте функцията с името на масива, без никакъв индекс.

Нека го разберем с примера

// Деклариране на масива от указатели. int * p;

Тук показва, че „p“ е масив от цяло число, ще съдържа адреса на 10 променлива от цяло число. Нека да предадем горния масив на показалец във функционален дисплей ().

дисплей (p); // Обадете се на дисплея на функцията. невалиден дисплей (int * d) {// Функция, приемаща показалеца. за (int i = 0; i <10; i ++) {cout << ("индекс" <

Тази функция ще показва стойностите, присъстващи в променливите, чиито адреси се съхраняват последователно в този показалечен масив.

Определение на Pointer

Показалецът е променлива, която държи адреса на паметта на друга променлива. Типът данни както на променливата на показалеца, така и на променливата, чийто адрес е присвоен на променлива на показалец, трябва да бъде един и същ. Променливата на показалеца е декларирана, както следва.

// Декларация в име на тип C ++ *;

Тук „type“ е тип данни, „name“ е името на променливата на показалеца. „Тип“ определя какъв тип адрес на променлива може да бъде запазен в променливата на показалеца. Например, целият показалец ще съхранява адреса на целочислената променлива. Има два оператора на указатели „*“ и „&“. Операторът „*“ връща стойността, разположена на адреса, която се съхранява в променливата, последвана от знака „*“. Операторът „&“ връща адреса на променливата, последван от знак „&“.

// например int b = 10 int a = & b; // Тук адресът на b се съхранява във променливата a. // оставя адресът на b да е 2000, така че сега a = 2000. int c = * a; // Тук целочислената променлива * a ще върне стойността, която се намира на адреса, съхраняван в .ie. с = 10.

Има само два аритметични оператора, които можете да използвате в указатели, т.е. събиране и изваждане. Ако приложите прираст върху целочислена променлива променлива, тя ще бъде увеличена от размера на типа данни, т.е. с 2 байта, тъй като е цяло число показалец, при увеличение ще трябва да посочи следващата целочислена променлива. Същият е случаят с декремент.

// p е целочислен указател, съдържащ стойност 2000. p ++; // сега p = 2002. p--; // сега p отново съдържа 2000, намалени с два байта.

  1. Масив съхранява променливите на подобни типове данни, а типовете данни на променливите трябва да съответстват на типа масив. От друга страна, променливата на показалеца съхранява адреса на променлива, от тип, подобен на тип тип променлива на показалеца.
  2. Можем да генерираме масив от указатели, т.е. масив, чиито променливи са променливите на показалеца. От друга страна, можем да създадем показалец, който сочи масив.
  3. Java поддържа масив, но не поддържа указатели.
  4. Размерът на масива определя броя на променливите, които може да съхранява, докато; променлива показалец може да съхранява адреса само на променлива

Забележка:

Java не поддържа или стриктно избягва указатели.

Заключение:

Когато трябва да работим върху елементи от данни от подобен тип данни, тогава вместо да работим отделно върху променливи, можем да създадем масив от тези променливи от подобни типове данни и след това да работим върху него. Указателите са необходими за някаква програма, тя дава огромна сила, но за съжаление, ако указателят съдържа неправилна стойност, това ще бъде най-трудният проблем за намиране.