Viit (informaatika)

Viit (inglise keeles pointer) on informaatikas muutuja, mille väärtus on mäluaadress. Viit tavaliselt viitab mõnele teise muutujale.

Viitasid kasutatakse näiteks siis, kui andmeid jagatakse programmi erinevate osade vahel, aga andmete kopeerimine on kulukas. Sel juhul on otstarbekas edastada vaid viit ehk mäluaadress, kus andmed paiknevad.

Viit ei pruugi alati viidata olemasolevale mälupesale. Seega tuleb hoolikalt jälgida, et viit oleks kasutamisel õigesti väärtustatud. Kõrgema taseme keeled (nt. Java ja Python) väldivad viitade kasutamist, sest olematu või vale mälupesa lugemine või kirjutamine võib programmi kokku jooksutada.

Et vältida väärtustamata viida kasutamist, antakse viidale tihti algväärtus 0. Seda nimetatakse nullviidaks (inglise k. null pointer). Enamikus süsteemides võib eeldada, et mäluaadressi 0 ei kasutata. Nullviidaga saab märkida ka näiteks listi lõppu või objekti puudumist.

Pointer ja reference

Inglise keeles kasutatakse sõnu pointer ja reference sageli samatähenduslikult, aga mõnedes programmeerimiskeeltes tehakse neil vahet. Nimelt madalatasemelistes keeltes, millel puudub prügikoguja (näiteks C, C++ ja Rust), tähendab pointer sageli väärtust, mis esindab mäluaadressi, ning reference kõrgematasemelist viidet või aliast teisele objektile.[1]

Pointeri puhul on sageli võimalik ka pointeri-aritmeetika, mille puhul on viitadega võimalik teha matemaatilisi tehteid – peamiselt liitmist ja lahutamist – ning pointer võib olla ka nullviit. C keeles on pointeritega tehete tegemine loomulik viis ligi pääseda loendite elementidele, kuigi üldjuhul toimub see tehe läbi [] operaatori.[2] Mõnedes sarnastes keeltes on aritmeetika pointeritega keelatud, näiteks Go puhul.[3] Reference on saadaval näiteks C++i ja Rusti keeltes, kus ta viitab otseselt antud tüüpi objektile. Reference ei ole kunagi null ning selle objekti aadressi esindava arvväärtusega ei ole võimalik teha aritmeetilisi tehteid.[1]

Prügikogujatega keeltes on sageli kõik muutujad vaikimisi viidad. Keeltes nagu Java ja C# on võimalik neid määrata ka nullviitadeks, ning nende kasutamine tõstatab erandi (näiteks Java puhul on selleks NullPointerException).[4]

Cybernetica andmekaitse- ja infoportaal esitab sõna "pointer" eestikeelseks vasteks sõna "viit",[5] ning sõna "reference" eestikeelseks vasteks sõna "viide", ehkki nendib, et viimase puhul on tegemist poolkeelse mugandusega.[6]

Viidad keeltes C ja C++

Programmeerimiskeeltes C ja C++ defineeritakse viit tärni (*) abil, mis asub muutuja tüübi ja nime vahel. Iga viit on seotud kindla andmetüübiga. Sümbol & muutuja nime ees tähistab selle aadressi.

int a = 2;    // a ja b on täisarvu tüüpi muutujad
int b = 3;
int *p = &a;  // p on viit muutujale a
Muutuja Address Väärtus
a 0x8130 0x00000002
b 0x8134 0x00000003
p 0x8138 0x00008130

Viida kaudu saab muuta viidatava muutuja väärtust. Tärn viida ees tähendabki, et kasutatakse viidatavat muutujat.

*p = 6;
Muutuja Aadress Väärtus
a 0x8130 0x00000006
b 0x8134 0x00000003
p 0x8138 0x00008130

Viida enda väärtust muutes saab viidata teistele muutujatele.

p = &b;
Muutuja Aadress Väärtus
a 0x8130 0x00000006
b 0x8134 0x00000003
p 0x8138 0x00008134

Viida kaudu saab ka lugeda viidatavaid muutujaid.

a = *p;
Muutuja Aadress Väärtus
a 0x8130 0x00000003
b 0x8134 0x00000003
p 0x8138 0x00008134

Viited

  1. 1,0 1,1 "References, Standard C++". isocpp.org. Vaadatud 5. veebruaril 2024.
  2. Plauger, P J; Brodie, Jim (1992). ANSI and ISO Standard C Programmer's Reference. Redmond, WA: Microsoft Press. Lk 108, 51. ISBN 978-1-55615-359-4.
  3. "A Tour of Go – Pointers". go.dev. Vaadatud 5. veebruaril 2024.
  4. "NullPointerException (Java Platform SE 8 )". docs.oracle.com. Vaadatud 5. veebruaril 2024.
  5. "pointer (2) - AKIT". akit.cyber.ee. Vaadatud 5. veebruaril 2024.
  6. "reference (4) - AKIT". akit.cyber.ee. Vaadatud 5. veebruaril 2024.

Read other articles:

ОттонвільOttonville   Країна  Франція Регіон Гранд-Ест  Департамент Мозель  Округ Форбак-Буле-Мозель Кантон Буле-Мозель Код INSEE 57530 Поштові індекси 57220 Координати 49°13′08″ пн. ш. 6°31′18″ сх. д.H G O Висота 200 - 308 м.н.р.м. Площа 15,71 км² Населення 438 (01-2020[1]) Густот...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (ديسمبر 2018) سباستيان جايمي   معلومات شخصية الميلاد 30 يناير 1987 (العمر 36 سنة)لابلاتا  الطول 1.80 م (5 قدم 11 بوصة) مركز اللعب مهاجم الجنسية الأرجنتين  معلومات ا...

 

Žydrūnas Karčemarskas Datos personalesNacimiento Alytus, Lituania24 de mayo de 1983 (40 años)Nacionalidad(es) LituanaAltura 1,89 metrosCarrera deportivaDeporte FútbolClub profesionalDebut deportivo 2000(Dainava Alytus)Posición PorteroRetirada deportiva 2019(Osmanlıspor)Selección nacionalSelección LTU LituaniaPart. (goles) 66 (0)[editar datos en Wikidata] Žydrūnas «Karce» Karčemarskas (Alytus, Lituania, 24 de mayo de 1983) es un exfutbolista lituano ...

Вілла-Сан-СекондоVilla San Secondo Комуна Країна  ІталіяРегіон П'ємонтПровінція АстіКод ISTAT 005119Поштові індекси 14020Телефонний код 0141Координати 45°00′27″ пн. ш. 8°08′05″ сх. д. / 45.00750° пн. ш. 8.13472° сх. д. / 45.00750; 8.13472Координати: 45°00′27″ пн. ш. 8°08′05...

 

Cheongwon 청원DaerahTranskripsi Korea • Hangul청원군 • Hanja淸原郡 • Alih Aksara yang DisempurnakanCheongwon-gun • McCune-ReischauerCh'ŏngwŏn-gunBandar Udara Internasional Cheongju berlokasi di Cheongwon Emblem dari CheongwonLokasi di Korea SelatanNegara Korea SelatanWilayahHoseoPembagian administratif2 eup, 13 myeonLuas • Total779,06 km2 (300,80 sq mi)Populasi (2001) • Total123.984...

 

Coordenadas: 38° 42' 44 N 9° 8' 24 O  Nota: Para Igreja do Carmo em Lisboa, veja Convento do Carmo. Convento do CarmoApresentaçãoTipo secularized monastery (d)património culturalcarmelomosteiro em ruínas (d)Fundação século XVEstilo arquitetura góticaOrdem religiosa Ordem do CarmoOcupantes Associação dos Arqueólogos PortuguesesMuseu Arqueológico do CarmoMuseu da GNR (d)Comando Geral da Guarda Nacional Republicana (d)Uso carmelo (d) (1...

  لمعانٍ أخرى، طالع صفي أباد (توضيح). صفي أباد تقسيم إداري البلد إيران  تعديل مصدري - تعديل   صفي أباد هي قرية في مقاطعة كاشان، إيران. عدد سكان هذه القرية هو 25 في سنة 2006.[1] مراجع ^ تعداد سكان جمهورية إيران الإسلامية، 1385 / 2006. جمهورية إيران الإسلامية. مؤرشف من الأصل (...

 

Мапа розташування Боснії і Герцеговини До списку лускокрилих Боснії і Герцеговини віднесені денні метелики і молі, що були зареєстровані у Боснії і Герцеговині. Згідно з останніми оцінками, існує 1904 види лускокрилих із 63 родин, що зустрічаються на території Боснії і Гер...

 

Italian sculptor You can help expand this article with text translated from the corresponding article in Italian. (August 2012) Click [show] for important translation instructions. View a machine-translated version of the Italian article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into ...

Character class in video gaming A healer is a type of character class in video gaming. When a game includes a health game mechanic and multiple classes, often one of the classes will be designed around the restoration of allies' health, known as healing, in order to delay or prevent their defeat. Such a class can be referred to as a healer. In addition to healing, healer classes are sometimes associated with buffs to assist allies in other ways, and nukes to contribute to the offense when hea...

 

The Painter of Signs First edition (US)AuthorR. K. NarayanCover artistAbner GraboffPublisherViking Press (US)Heinemann (UK)Publication date1977ISBN0-670-53567-2Preceded byMy Days Followed byA Tiger for Malgudi  The Painter of Signs is a 1976 novel by R. K. Narayan. Plot This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (March 2010) (Learn how and when to r...

 

Elgendorf Stadt Montabaur Koordinaten: 50° 27′ N, 7° 48′ O50.44312017.7972111257Koordinaten: 50° 26′ 35″ N, 7° 47′ 50″ O Höhe: 257 (256–310) m ü. NHN Fläche: 2,6 km² Einwohner: 1271 (1. Aug. 2018) Bevölkerungsdichte: 489 Einwohner/km² Eingemeindung: 22. April 1972 Postleitzahl: 56410 Vorwahl: 02602 Elgendorf (Rheinland-Pfalz) Lage von Elgendorf in Rheinland-Pfalz Elgendorf (2020) ...

19th-century Afghan politician This article is about the early 19th century Afghan noble. For the 17th century Mughal general, see Azim Khan's Tomb. For the Afghan cricketer, see Azim Khan (cricketer). The Sons and pedigree of Sardar Payendah 'Sarfraz' Khan Sardar Mohammad Azim Khan Barakzai (Pashto: عظیم خان) was a Pashtun noble who served as Afghan governor of Kashmir (1812–1819).[1] He was the second son of the Barakzai chief Payinda Sarfaraz Khan, while his elder brother ...

 

Ketam kenari Periode Neogen-Sekarang, 23–00 jtyl PreЄ Є O S D C P T J K Pg N Birgus latro Status konservasiRentanIUCN2811 TaksonomiKerajaanAnimaliaFilumArthropodaKelasMalacostracaOrdoDecapodaFamiliCoenobitidaeGenusBirgusSpesiesBirgus latro (Linnaeus, 1767) Tata namaSinonim takson Cancer crumenatus Rumphius, 1705 (pre-Linnean) Cancer crumenatus orientalis Seba, 1759 Cancer latro Linnaeus, 1767 Birgus laticauda Latreille, 1829[1] ProtonimCancer latro DistribusiKetam kenari terd...

 

1980 studio album by Willie Nelson and Ray PriceSan Antonio RoseStudio album by Willie Nelson and Ray PriceReleasedMay 1980 (May 1980)GenreCountryLength36:52LabelColumbiaProducerWillie NelsonWillie Nelson albums chronology The Electric Horseman(1980) San Antonio Rose(1980) Honeysuckle Rose(1980) Ray Price albums chronology There's Always Me(1979) San Antonio Rose(1980) A Tribute to Willie and Kris(1981) Professional ratingsReview scoresSourceRatingAllmusic[1] San Antonio ...

Erriyon Knighton détient le record du monde junior du 200 m en 19 s 69 Les records du monde juniors d'athlétisme sont régies par World Athletics. Elles constituent les meilleures performances mondiales des athlètes âgés de moins de vingt ans. Pour les fédérations, le sigle officiel est WU20R pour World Under-20 Record (précédemment WJR pour World Junior Record). Records du monde Hommes Discipline Performance Athlète Compétition Lieu Date Réf. 100 m 9 s 91...

 

Sumber daya dan elektroda alat setrum erotis Setrum erotis (atau erotic electrostimulation[1] dan juga dikenal sebagai electrosex) adalah praktik seksual yang melibatkan penggunaan rangsangan listrik ke saraf tubuh, dengan penekanan khusus pada alat kelamin. Praktik ini biasanya dilakukan menggunakan berbagai mainan seks yang menghasilkan tegangan listrik (seperti TENS, EMS, tongkat ungu) untuk rangsangan seksual. Elektrostimulasi telah dikaitkan dengan aktivitas BDSM, dan elektrostim...

 

Village in Navarre, SpainUrdaxVillageUrdazubi / Urdax Coat of armsCountry SpainAutonomous communityNavarreProvincePamplonaGovernment • MayorSantiago Villares Oteguy. (2015) (Azkar)Area • Total7.75 km2 (2.99 sq mi)Elevation90 m (300 ft)Highest elevation90 m (300 ft)Lowest elevation0 m (0 ft)Population (2014) • Total392 • Density51/km2 (130/sq mi)DemonymUrdaizubitarraTime zoneUT...

American Orthodox monk and writer Seraphim RoseHieromonkBornAugust 13, 1934San Diego, CaliforniaDiedSeptember 2, 1982(1982-09-02) (aged 48)Platina, CaliforniaMajor shrineSaint Herman of Alaska Monastery, Platina, CaliforniaPart of a series onPalamismGregory Palamas History Hesychast controversy Fifth Council of Constantinople Synod of Jerusalem Neo-Palamism Theology Essence–energies distinction Hesychasm Theoria Theotokos Theosis Tabor Light Hypostatic union Apophatic theology Influenc...

 

Animation de la fonction de densité d'une loi normale, en faisant varier la moyenne entre -5 et 5. La moyenne est un paramètre de position et ne fait que déplacer la courbe en forme de cloche. En théorie des probabilités et statistiques, un paramètre de position (ou de localisation) est, comme son nom l'indique, un paramètre qui régit la position d'une densité de probabilité. Si ce paramètre (scalaire ou vectoriel) est noté λ, la densité se présente formellement comme : f ...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!