Diferența dintre Array și Pointer

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 15 Mai 2024
Anonim
Difference between arrays and pointers in C
Video: Difference between arrays and pointers in C

Conţinut


Există o relație strânsă între tablou și indicatorul. Indicatorul poate fi folosit pentru a accesa elementele tabloului, accesarea întregului tablou folosind aritmetica pointerului, face accesarea mai rapidă. Există o diferență de bază între un pointer și un tablou care este, un tablou este o colecție de variabile de tip de date similare, în timp ce indicatorul este o variabilă care stochează adresa unei alte variabile. Există alte câteva diferențe între un tablou și un indicator care sunt discutate mai jos în graficul de comparație.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațiemulțimeac indicator
Declaraţie// În C ++
tip var_nume;
// În Java.
tip var-nume;
var_name = tip nou;
// În C ++
tip * var_name;
LucruStochează valoarea variabilei tipului de date omogen.Stocați adresa altei variabile a aceluiași tip de date ca și tipul de date al variabilelor pointer.
GeneraţieSe poate genera o serie de indicatoare.Un pointer către un tablou poate fi generat.
Asistență JavaSusțineți conceptul de matrice.Nu acceptă indicatoare.
DepozitareUn tablou normal stochează valori ale variabilei și tabloul indică adresa variabilelor.Pointerele sunt special concepute pentru a stoca adresa variabilelor.
CapacitateUn tablou poate stoca numărul de elemente menționate în dimensiunea variabilei de matrice. O variabilă pointer poate stoca adresa unei singure variabile simultan.


Definiția Array

Un tablou reprezintă colecția de elemente ale aceluiași tip de date și toate aceste elemente sunt menționate printr-un nume comun, care este numele unei variabile matrice. Un anumit element de matrice poate fi accesat accesând indexul specific al tabloului în care este memorat elementul respectiv. Graficele pot fi un tablou unidimensional, un tablou bidimensional sau un tablou multidimensional. Un tablou de indicatoare poate fi, de asemenea, generat, adică un tablou care conține toate variabile ca variabilă pointer. În „C ++” matricile sunt alocate static, în timp ce, în „Java”, matricile sunt alocate dinamic.

// În tip C ++ var_name; // În Java. tip var-nume; var_name = tip nou;

Aici, „tip” denotă tipul de date al unei variabile de matrice, „var_name” denumește numele dat variabilei matrice, „mărime” denumește capacitatea variabilei matrice, adică câte elemente ale „tipului” pot fi stocate în acea variabilă matricială . Există două metode de accesare a unui tablou, prima „aritmetică de pointer” și a doua „indexare a matricei”, dintre care „aritmetica indicatoarelor” este mai rapidă.


// accesarea folosind aritmetica pointer Void display_array (int * S) {while (* s) {cout (<< "valoarea este" << * s); * S ++; }}

Utilizarea „aritmeticii indicatoarelor” ar funcționa mai repede în comparație cu „indexarea matricei”, adică accesarea variabilei matrice utilizând indexul acesteia. Dacă aveți nevoie pentru a trece un tablou de pointeri într-o funcție, aceasta se poate face folosind aceeași metodă pe care o utilizați pentru a trece un tablou normal, adică apelați direct funcția cu numele tabloului, fără niciun index.

Să o înțelegem cu exemplul

// Declararea tabloului indicatoare. int * p;

Aici, arată că „p” este un tablou de tip întreg, va deține adresa a 10 variabile de tip întreg. Să trecem tabloul de indicatori de mai sus într-un afișaj funcțional ().

afișare (p); // Apelați afișarea funcțiilor. void display (int * d) {// Funcție de recepție a tabloului pointer. for (int i = 0; i <10; i ++) {cout << ("index" <

Această funcție va afișa valorile, prezente în variabile, ale căror adrese sunt stocate în acest tablou de indicatoare secvențial.

Definiția Pointer

Indicatorul este o variabilă care deține adresa de memorie a altei variabile. Tipul de date al ambelor, variabila pointer și variabila a cărei adresă este atribuită unei variabile pointer, trebuie să fie aceeași. Variabila pointer este la fel de declarată după cum urmează.

// Declarație în numele tip C ++ *;

Aici, „tip” este un tip de date, „nume” este numele variabilei indicatoare. „Tip” definește ce fel de adresă de variabilă poate fi stocată în variabila pointer. De exemplu, indicatorul întreg va stoca adresa variabilei întregi. Există doi operatori indicatori „*” și „&”. Operatorul „*” returnează valoarea localizată la adresa, care este stocată în variabilă urmată de semnul „*”. Operatorul „&” returnează adresa variabilei urmată de semnul „&”.

// de exemplu int b = 10 int a = & b; // Aici adresa b este stocată în variabila a. // lasă adresa lui b este 2000, deci acum a = 2000. int c = * a; // Aici, variabila cu indicatorul întreg * a va returna valoarea care se află la adresa stocată într-un .ie. c = 10.

Există doar doi operatori aritmetici pe care îi puteți folosi la indicatoare, adică adunare și scădere. Dacă aplicați increment pe o variabilă pointer întreagă, aceasta va fi incrementată de dimensiunea tipului de date, adică cu 2 octeți, deoarece este un indicator întreg, la increment, va trebui să puncteze următoarea variabilă întreagă. La fel se întâmplă și cu decrementarea.

// p este un indicator întreg cu valoarea 2000. p ++; // acum p = 2002. p--; // acum p conțin din nou 2000, așa cum este decrementat cu doi octeți.

  1. Un tablou stochează variabilele tipurilor de date similare, iar tipurile de date ale variabilelor trebuie să corespundă tipului de matrice. Pe de altă parte, variabila pointeră stochează adresa unei variabile, a unui tip similar unui tip de variabilă pointer.
  2. Putem genera o serie de indicatori, adică un tablou ale cărui variabile sunt variabilele pointer. Pe de altă parte, putem crea un indicator care indică un tablou.
  3. Java acceptă matricea, dar nu acceptă indicatoare.
  4. O dimensiune de matrice decide numărul de variabile pe care le poate stoca; o variabilă pointer poate stoca adresa numai a unei variabile

Notă:

Java nu acceptă sau evită strict indicatoarele.

Concluzie:

Atunci când trebuie să lucrăm la elemente de tip de date similare atunci, în loc să lucrăm separat la variabile, putem crea o serie de variabile de tipuri de date similare și apoi să funcționăm pe ea. Indicatoarele sunt necesare pentru un anumit program, oferă o putere extraordinară, dar, din păcate, dacă un pointer conține o valoare incorectă, va fi cel mai dificil de găsit.