Diferència entre el punter i la matriu

Diferència entre el punter i la matriu
Diferència entre el punter i la matriu

Vídeo: Diferència entre el punter i la matriu

Vídeo: Diferència entre el punter i la matriu
Vídeo: Недорогая надёжная Кофемашина DeLonghi Magnifica S ECAM22.110.B. - обзор, советы по настройке! 2024, De novembre
Anonim

Pointer vs Array

Un punter és un tipus de dades que conté una referència a una ubicació de memòria (és a dir, una variable de punter emmagatzema una adreça d'una ubicació de memòria on s'emmagatzemen algunes dades). Les matrius són l'estructura de dades més utilitzada per emmagatzemar una col·lecció d'elements. La majoria dels llenguatges de programació ofereixen mètodes per declarar fàcilment matrius i accedir als elements de les matrius.

Què és un punter?

Un punter és un tipus de dades que emmagatzema una adreça d'una ubicació de memòria on s'emmagatzemen algunes dades. En altres paraules, un punter conté una referència a una ubicació de memòria. L'accés a les dades emmagatzemades a la ubicació de memòria a la qual fa referència el punter s'anomena desreferenciació. Quan es realitzen operacions repetitives com ara recórrer arbres/cadenes, cerques de taules, etc., l'ús de punters milloraria el rendiment. Això es deu al fet que desreferenciar i copiar punters és més barat que copiar i accedir a les dades apuntades pels punters. Un punter nul és un punter que no apunta a res. A Java, accedir a un punter nul generaria una excepció anomenada NullPointerException.

Què és una matriu?

A la figura 1, és un fragment de codi que s'utilitza normalment per declarar i assignar valors a una matriu. La figura 2 mostra com es veuria una matriu a la memòria.

valors int[5];

valors[0]=100;

valors[1]=101;

valors[2]=102;

valors[3]=103;

valors[4]=104;

Figura 1: codi per declarar i assignar valors a una matriu

100 101 102 103 104
Índex: 0 1 2 3 4

Figura 2: matriu emmagatzemada a la memòria

El codi anterior defineix una matriu que pot emmagatzemar 5 nombres enters i s'hi accedeix mitjançant els índexs del 0 al 4. Una propietat important d'una matriu és que tota la matriu s'assigna com un únic bloc de memòria i cada element obté el seu espai propi a la matriu. Un cop definida una matriu, la seva mida es fixa. Per tant, si no esteu segur de la mida de la matriu en el moment de la compilació, haureu de definir una matriu prou gran per estar al costat segur. Però, la majoria de vegades, en realitat farem servir menys elements del que hem assignat. Per tant, es malgasta una quantitat considerable de memòria. D' altra banda, si la "matriu prou gran" no és realment prou gran, el programa es bloquejaria.

Quina diferència hi ha entre punters i matrius?

Un punter és un tipus de dades que emmagatzema una adreça d'una ubicació de memòria on s'emmagatzemen algunes dades, mentre que les matrius són l'estructura de dades més utilitzada per emmagatzemar una col·lecció d'elements. En el llenguatge de programació C, la indexació de matrius es fa mitjançant l'aritmètica de punters (és a dir, l'i-è element de la matriu x seria equivalent a (x+i)). Per tant, a C, un conjunt de punters que apunten a un conjunt de ubicacions de memòria consecutives, es pot considerar com una matriu. A més, hi ha una diferència en com opera l'operador sizeof en punters i matrius. Quan s'aplica a una matriu, l'operador sizeof retornarà tota la mida de la matriu, mentre que quan s'aplica a un punter, retornarà només la mida del punter.

Recomanat: