Pagkakaiba sa pagitan ng Pointer at Array

Pagkakaiba sa pagitan ng Pointer at Array
Pagkakaiba sa pagitan ng Pointer at Array

Video: Pagkakaiba sa pagitan ng Pointer at Array

Video: Pagkakaiba sa pagitan ng Pointer at Array
Video: From ANUNNAKI to the BIBLICAL YAHWEH | Tracing the path of the only god. 2024, Nobyembre
Anonim

Pointer vs Array

Ang pointer ay isang uri ng data na nagtataglay ng reference sa isang lokasyon ng memorya (ibig sabihin, ang isang pointer variable ay nag-iimbak ng isang address ng isang lokasyon ng memorya kung saan ang ilang data ay nakaimbak). Ang mga array ay ang pinakakaraniwang ginagamit na istraktura ng data upang mag-imbak ng isang koleksyon ng mga elemento. Karamihan sa mga programming language ay nagbibigay ng mga paraan upang madaling magdeklara ng mga array at ma-access ang mga elemento sa mga array.

Ano ang Pointer?

Ang pointer ay isang uri ng data na nag-iimbak ng address ng isang lokasyon ng memorya kung saan nakaimbak ang ilang data. Sa madaling salita, ang isang pointer ay may hawak na reference sa isang lokasyon ng memorya. Ang pag-access sa data na nakaimbak sa lokasyon ng memorya na isinangguni ng pointer ay tinatawag na dereferencing. Kapag nagsasagawa ng mga paulit-ulit na operasyon tulad ng pagtawid sa mga puno/string, paghahanap ng talahanayan, atbp., ang paggamit ng mga pointer ay magpapahusay sa pagganap. Ito ay dahil ang dereferencing at pagkopya ng mga pointer ay mas mura kaysa sa aktwal na pagkopya at pag-access sa data na itinuro ng mga pointer. Ang null pointer ay isang pointer na hindi tumuturo sa anuman. Sa Java, ang pag-access ng null pointer ay bubuo ng exception na tinatawag na NullPointerException.

Ano ang Array?

Ipinapakita sa figure 1, ay isang piraso ng code na karaniwang ginagamit upang magdeklara at magtalaga ng mga value sa isang array. Ang Figure 2 ay naglalarawan kung ano ang magiging hitsura ng isang array sa memorya.

int values[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Figure 1: Code para sa pagdedeklara at pagtatalaga ng mga value sa isang array

100 101 102 103 104
Index: 0 1 2 3 4

Figure 2: Array na nakaimbak sa memory

Ang code sa itaas ay tumutukoy sa isang array na maaaring mag-imbak ng 5 integer at ina-access ang mga ito gamit ang mga indeks 0 hanggang 4. Ang isang mahalagang katangian ng isang array ay ang, ang buong array ay inilalaan bilang isang bloke ng memorya at ang bawat elemento ay nakakakuha nito sariling espasyo sa array. Kapag natukoy na ang isang array, naayos na ang laki nito. Kaya't kung hindi ka sigurado tungkol sa laki ng array sa oras ng pag-compile, kailangan mong tukuyin ang isang sapat na malaking array upang maging ligtas na bahagi. Ngunit, sa karamihan ng mga pagkakataon, talagang gagamit tayo ng mas kaunting bilang ng mga elemento kaysa sa inilaan natin. Kaya ang isang malaking halaga ng memorya ay talagang nasayang. Sa kabilang banda, kung ang “large enough array” ay hindi talaga sapat na laki, ang program ay mag-crash.

Ano ang pagkakaiba ng Pointer at Arrays?

Ang pointer ay isang uri ng data na nag-iimbak ng isang address ng isang lokasyon ng memorya kung saan nakaimbak ang ilang data, habang ang mga Array ay ang pinakakaraniwang ginagamit na istraktura ng data upang mag-imbak ng isang koleksyon ng mga elemento. Sa C programming language, ang array indexing ay ginagawa gamit ang pointer arithmetic (i.e. ang ith element ng array x ay magiging katumbas ng (x+i)). Samakatuwid sa C, ang hanay ng mga pointer na tumuturo sa isang hanay ng mga lokasyon ng memorya na magkakasunod, ay maaaring isipin bilang isang array. Dagdag pa, mayroong pagkakaiba sa kung paano gumagana ang laki ng operator sa mga pointer at array. Kapag inilapat sa isang array, ibabalik ng sizeof operator ang buong laki ng array, samantalang kapag inilapat sa isang pointer, ibabalik lang nito ang laki ng pointer.

Inirerekumendang: