Поинтер вс Арраи
Показивач је тип података који садржи референцу на меморијску локацију (тј. Варијабла показивача чува адресу меморијске локације у којој су неки подаци похрањени). Низови су најчешће кориштена структура података за спремање колекције елемената. Већина програмских језика пружа методе за лако декларирање низова и приступ елементима у низовима.
Шта је Поинтер?
Показивач је тип података који чува адресу меморијске локације у коју су похрањени неки подаци. Другим речима, показивач садржи референцу на меморијску локацију. Приступ подацима похрањеним на меморијској локацији на које упућује показивач назива се дереференцирање. Приликом извођења понављајућих операција попут преласка стабала / низова, прегледавања таблица итд., Коришћење показивача би побољшало перформансе. То је зато што је преусмјеравање и копирање показивача јефтиније од стварног копирања и приступа подацима који показују показивачи. Нулти показивач је показивач који не упућује ни на шта. У Јави, приступ нулл показивачу створио би изузетак који се зове НуллПоинтерЕкцептион.
Шта је низ?
Приказано на слици 1, је део кода који се обично користи за декларирање и додељивање вредности пољу. Слика 2 приказује како би низ изгледао у меморији.
инт вредности [5]; вредности [0] = 100; вредности [1] = 101; вредности [2] = 102; вредности [3] = 103; вредности [4] = 104; |
Слика 1: Код за декларирање и додјељивање вриједности пољу
100 | 101 | 102 | 103 | 104 |
Индекс: 0 | 1 | 2 | 3 | 4 |
Слика 2: Низ сачуван у меморији
Горњи код дефинира низ који може похранити 5 цјелобројних бројева и њима се приступа помоћу индекса 0 до 4. Једно важно својство матрице је да је цијели низ додијељен као један блок меморије и сваки елемент добија свој властити простор у пољу . Једном када се дефинира низ, фиксира се његова величина. Дакле, ако нисте сигурни у величину матрице током компајлирања, морали бисте дефинирати довољно велики низ да бисте били на сигурној страни. Али већину времена ћемо заправо користити мањи број елемената него што смо их доделили. Тако да је значајна количина меморије заправо изгубљена. С друге стране, ако „довољно велики низ“ у ствари није довољно велик, програм би се срушио.
Која је разлика између показивача и низова?
Показивач је тип података који чува адресу меморијске локације у којој су похрањени неки подаци, док су низови најчешће коришћена структура података за смештање колекције елемената. У програмском језику Ц индексирање поља се врши помоћу аритметике показивача (тј. И-ти елемент матрице к био би еквивалентан * (к + и)). Стога се на Ц скупу показивача који упућују на низ меморијских локација које су узастопне може сматрати низом. Надаље, постоји разлика у начину на који оператер сизеоф дјелује на показивачима и низовима. Када се примијени на низ, оператор сизеоф ће вратити цијелу величину матрице, док када се примијени на показивач, вратиће само величину показивача.