[{"data":1,"prerenderedAt":187},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-menggunakan-pointer-pada-bahasa-pascal-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":117,"renderedTakeaway":118,"latestArticles":119,"toc":171},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":55,"takeway":56,"body":57,"authors":58,"series":64},"76","Menggunakan Pointer pada Bahasa Pascal","menggunakan-pointer-pada-bahasa-pascal","Sebuah variable yang bertipe pointer nantinya hanya dapat berisi sebuah alamat dari variable lain.","2020-12-02T14:17:47.000Z",{"id":49},"f98ed665-5806-4fb3-ba62-3cca57077b56",[51,52,53,54],"pascal","pointer","tipe-data","konsep",2,null,"Setelah sebelumnya kita membahas tentang [ARRAY](https://invasikode.com/array-pascal/) dan [RECORD](https://invasikode.com/menggunakan-tipe-data-record-pada-pascal/) pada Pascal, kali ini kita akan membahas tentang pengunaan tipe data POINTER pada Pascal.\n\n## Apa itu Pointer?\n\nPointer merupakan fitur yang kebanyakan ada pada bahasa pemrograman lawas. Pointer berfungsi untuk mendapatkan *address* variable dalam memory.\n\nSemua variable yang kita buat dalam bahasa Pascal ini pasti akan disimpan dalam RAM pada komputer. Namun penyimpanan ini tidak langsung berupa nama variable, melainkan mengunakan alamat yang terdiri dari bilangan biner.\n\n> Sebenarnya dalam RAM sendiri masih ada lokasi memori yaitu **stack** dan **heap**. Tetapi mungkin akan kita bahas lain waktu, karena bisa panjang hehe...\n\n**Lalu apa kegunaan pointer?**\n\nPointer berguna dalam pembuatan program yang kompleks untuk alokasi memori dinamis dan efisiensi penggunaan memori. Karena kita masih belajar dasar, sekarang kita cukup menggunakan pointer sebagai referensi variable saja.\n\n## Mendeklarasikan Pointer pada Pascal\n\nUntuk menggunakan pointer kita harus mendeklarasikannya sebagai tipe data. Sebuah variable yang bertipe pointer nantinya hanya dapat berisi sebuah alamat dari variable lain.\n\nDeklarasi pointer dapat dilakukan dengan memberi tanda pangkat (^) didepan tipe variable yang kita deklarasikan.\n\n```\nvar\n  nama-pointer: ^tipe-data;\n```\n\nContoh:\n\n```pascal\nvar\n  strptr: ^string;  // pointer untuk tipe data string\n  intptr: ^integer; // pointer untuk tipe data integer\n```\n\n## Mendapatkan Alamat Variable\n\nKarena pointer hanya dapat diisi dengan alamat variable, kita harus mengetahui alamat dari variable yang akan kita masukkan ke pointer.\n\nUntuk mendapatkan alamat dari variable bisa digunakan tanda **@** sebelum nama variable.\n\nYuk langsung kita coba buat program sederhananya.\n\n```pascal\nprogram Pointer;\nuses crt;\nvar\n  strptr: ^string; // buat pointer dengan tipe string\n  kata: string;\nbegin\n  clrscr;\n  strptr := @kata; // strptr berisi alamat variable kata\n  writeln(kata);\n  readln;\nend.\n```\n\nSip, kalau dijalankan memang tidak muncul apa-apa, tetapi sekarang variable **strptr** sudah berisi alamat dari variable **kata**.\n\nSelanjutnya kita bisa mengubah variable **kata** secara tidak langsung menggunakan pointer. Yuk lanjut..\n\n## Mengakses Nilai Pointer\n\nUntuk mengubah nilai variable **kata** melalui pointer kita bisa mengakses nilainya dengan tanda pangkat (**^**) yang dituliskan setelah nama variable.\n\n```pascal\nprogram Pointer;\nuses crt;\nvar\n  strptr: ^string; // buat pointer dengan tipe string\n  kata: string;\nbegin\n  clrscr;\n  strptr := @kata; // strptr berisi alamat variable kata\n  strptr^ := 'Belajar pointer di invasikode'; // mengakses nilai pointer\n  writeln(kata);\n  readln;\nend.\n```\n\nJika kalian jalankan maka kira-kira akan keluar output sebagai berikut:\n\n```\nBelajar pointer di invasikode\n```\n\nPada program tersebut sama sekali tidak ada pengaksesan variable **kata** secara langsung. Kita menggunakan pointer sebagai referensi ke variable **kata** dan mengubahnya secara tidak langsung.\n\nIni juga bisa dilakukan pada semua tipe data. Termasuk [RECORD](https://invasikode.com/menggunakan-tipe-data-record-pada-pascal/), [SUBRANGE](https://invasikode.com/data-bentukan-pascal/), dan [ENUM](https://invasikode.com/data-bentukan-pascal/).\n\n## Penutup\n\nMungkin sekarang penggunaan pointer terlihat kurang peting ya. Tunggu saja nanti saat menggunakan FUNCTION dan PROCEDURE, pointer ini bisa sangat berguna untuk memanipulasi data. Dengan konsep yang sama tentunya.\n\nSekian untuk tutorial kali ini, semoga bermanfaat :D\n\nSelanjutnya kita akan membahas tentang konsep [pemrograman prosedural pada bahasa Pascal](https://invasikode.com/pascal-prosedural/)",[59],{"authors_id":60},{"name":61,"slug":62,"role":63,"profile_picture":56},"Daffa Izzuddin","izzudd","Writer",{"id":65,"title":66,"slug":67,"articles":68,"parent_series":99},"25","Tipe Data Bentukan","pascal-tipe-data-bentukan",[69,78,87,96],{"id":70,"title":71,"slug":72,"excerpt":73,"thumbnail_image":74,"tags":76},"73","Tentang Tipe Data Bentukan pada Pascal","tentang-tipe-data-bentukan-pada-pascal","Tipe data bentukan atau User defined data types terbagi menjadi 2, yaitu Enumerated dan Subrange",{"id":75},"c0e9e3ac-75df-4af6-86c5-2c136dc47233",[51,53,77,54],"struktur-data",{"id":79,"title":80,"slug":81,"excerpt":82,"thumbnail_image":83,"tags":85},"74","Menggunakan Tipe Data RECORD pada Pascal","menggunakan-tipe-data-record-pada-pascal","RECORD merupakan tipe data terstruktur pada bahasa Pascal yang terdiri dari kumpulan tipe data standar dan bentukan.",{"id":84},"92bbe4a8-316f-4549-9819-797a44472a45",[51,86,53,77],"record",{"id":88,"title":89,"slug":90,"excerpt":91,"thumbnail_image":92,"tags":94},"75","Menggunakan Tipe Data Array pada Pascal","menggunakan-tipe-data-array-pada-pascal","ARRAY merupakan struktur data yang berisi sekumpulan data dengan tipe data yang sama. Data dalam ARRAY ini dapat diakses dengan menggunakan index.",{"id":93},"50e5c328-b262-4919-aabc-1fbd607f6c2b",[51,95,53,77],"array",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":97,"tags":98},{"id":49},[51,52,53,54],{"id":100,"title":29,"slug":30,"parent_series":101,"children_series":103},"14",{"id":102,"title":22,"slug":23,"parent_series":56},"1",[104,108,112,113],{"id":105,"title":106,"slug":107,"cover_image":56},"23","Berkenalan dengan Bahasa Pascal","pascal-intro",{"id":109,"title":110,"slug":111,"cover_image":56},"24","Struktur Kontrol","pascal-struktur-kontrol",{"id":65,"title":66,"slug":67,"cover_image":56},{"id":114,"title":115,"slug":116,"cover_image":56},"26","Pemrograman Prosedural","pascal-pemrograman-prosedural","\u003Cp>Setelah sebelumnya kita membahas tentang \u003Ca href=\"https://invasikode.com/array-pascal/\">ARRAY\u003C/a> dan \u003Ca href=\"https://invasikode.com/menggunakan-tipe-data-record-pada-pascal/\">RECORD\u003C/a> pada Pascal, kali ini kita akan membahas tentang pengunaan tipe data POINTER pada Pascal.\u003C/p>\n\u003Ch2 id=\"apa-itu-pointer\">Apa itu Pointer?\u003C/h2>\n\u003Cp>Pointer merupakan fitur yang kebanyakan ada pada bahasa pemrograman lawas. Pointer berfungsi untuk mendapatkan \u003Cem>address\u003C/em> variable dalam memory.\u003C/p>\n\u003Cp>Semua variable yang kita buat dalam bahasa Pascal ini pasti akan disimpan dalam RAM pada komputer. Namun penyimpanan ini tidak langsung berupa nama variable, melainkan mengunakan alamat yang terdiri dari bilangan biner.\u003C/p>\n\u003Cblockquote>\n\u003Cp>Sebenarnya dalam RAM sendiri masih ada lokasi memori yaitu \u003Cstrong>stack\u003C/strong> dan \u003Cstrong>heap\u003C/strong>. Tetapi mungkin akan kita bahas lain waktu, karena bisa panjang hehe...\u003C/p>\n\u003C/blockquote>\n\u003Cp>\u003Cstrong>Lalu apa kegunaan pointer?\u003C/strong>\u003C/p>\n\u003Cp>Pointer berguna dalam pembuatan program yang kompleks untuk alokasi memori dinamis dan efisiensi penggunaan memori. Karena kita masih belajar dasar, sekarang kita cukup menggunakan pointer sebagai referensi variable saja.\u003C/p>\n\u003Ch2 id=\"mendeklarasikan-pointer-pada-pascal\">Mendeklarasikan Pointer pada Pascal\u003C/h2>\n\u003Cp>Untuk menggunakan pointer kita harus mendeklarasikannya sebagai tipe data. Sebuah variable yang bertipe pointer nantinya hanya dapat berisi sebuah alamat dari variable lain.\u003C/p>\n\u003Cp>Deklarasi pointer dapat dilakukan dengan memberi tanda pangkat (^) didepan tipe variable yang kita deklarasikan.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"var%0A%20%20nama-pointer%3A%20%5Etipe-data%3B\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>var\n  nama-pointer: ^tipe-data;\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Contoh:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"var%0A%20%20strptr%3A%20%5Estring%3B%20%20%2F%2F%20pointer%20untuk%20tipe%20data%20string%0A%20%20intptr%3A%20%5Einteger%3B%20%2F%2F%20pointer%20untuk%20tipe%20data%20integer\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>var\n  strptr: ^string;  // pointer untuk tipe data string\n  intptr: ^integer; // pointer untuk tipe data integer\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"mendapatkan-alamat-variable\">Mendapatkan Alamat Variable\u003C/h2>\n\u003Cp>Karena pointer hanya dapat diisi dengan alamat variable, kita harus mengetahui alamat dari variable yang akan kita masukkan ke pointer.\u003C/p>\n\u003Cp>Untuk mendapatkan alamat dari variable bisa digunakan tanda \u003Cstrong>@\u003C/strong> sebelum nama variable.\u003C/p>\n\u003Cp>Yuk langsung kita coba buat program sederhananya.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"program%20Pointer%3B%0Auses%20crt%3B%0Avar%0A%20%20strptr%3A%20%5Estring%3B%20%2F%2F%20buat%20pointer%20dengan%20tipe%20string%0A%20%20kata%3A%20string%3B%0Abegin%0A%20%20clrscr%3B%0A%20%20strptr%20%3A%3D%20%40kata%3B%20%2F%2F%20strptr%20berisi%20alamat%20variable%20kata%0A%20%20writeln(kata)%3B%0A%20%20readln%3B%0Aend.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>program Pointer;\nuses crt;\nvar\n  strptr: ^string; // buat pointer dengan tipe string\n  kata: string;\nbegin\n  clrscr;\n  strptr := @kata; // strptr berisi alamat variable kata\n  writeln(kata);\n  readln;\nend.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Sip, kalau dijalankan memang tidak muncul apa-apa, tetapi sekarang variable \u003Cstrong>strptr\u003C/strong> sudah berisi alamat dari variable \u003Cstrong>kata\u003C/strong>.\u003C/p>\n\u003Cp>Selanjutnya kita bisa mengubah variable \u003Cstrong>kata\u003C/strong> secara tidak langsung menggunakan pointer. Yuk lanjut..\u003C/p>\n\u003Ch2 id=\"mengakses-nilai-pointer\">Mengakses Nilai Pointer\u003C/h2>\n\u003Cp>Untuk mengubah nilai variable \u003Cstrong>kata\u003C/strong> melalui pointer kita bisa mengakses nilainya dengan tanda pangkat (\u003Cstrong>^\u003C/strong>) yang dituliskan setelah nama variable.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"program%20Pointer%3B%0Auses%20crt%3B%0Avar%0A%20%20strptr%3A%20%5Estring%3B%20%2F%2F%20buat%20pointer%20dengan%20tipe%20string%0A%20%20kata%3A%20string%3B%0Abegin%0A%20%20clrscr%3B%0A%20%20strptr%20%3A%3D%20%40kata%3B%20%2F%2F%20strptr%20berisi%20alamat%20variable%20kata%0A%20%20strptr%5E%20%3A%3D%20'Belajar%20pointer%20di%20invasikode'%3B%20%2F%2F%20mengakses%20nilai%20pointer%0A%20%20writeln(kata)%3B%0A%20%20readln%3B%0Aend.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>program Pointer;\nuses crt;\nvar\n  strptr: ^string; // buat pointer dengan tipe string\n  kata: string;\nbegin\n  clrscr;\n  strptr := @kata; // strptr berisi alamat variable kata\n  strptr^ := 'Belajar pointer di invasikode'; // mengakses nilai pointer\n  writeln(kata);\n  readln;\nend.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jika kalian jalankan maka kira-kira akan keluar output sebagai berikut:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Belajar%20pointer%20di%20invasikode\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Belajar pointer di invasikode\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pada program tersebut sama sekali tidak ada pengaksesan variable \u003Cstrong>kata\u003C/strong> secara langsung. Kita menggunakan pointer sebagai referensi ke variable \u003Cstrong>kata\u003C/strong> dan mengubahnya secara tidak langsung.\u003C/p>\n\u003Cp>Ini juga bisa dilakukan pada semua tipe data. Termasuk \u003Ca href=\"https://invasikode.com/menggunakan-tipe-data-record-pada-pascal/\">RECORD\u003C/a>, \u003Ca href=\"https://invasikode.com/data-bentukan-pascal/\">SUBRANGE\u003C/a>, dan \u003Ca href=\"https://invasikode.com/data-bentukan-pascal/\">ENUM\u003C/a>.\u003C/p>\n\u003Ch2 id=\"penutup\">Penutup\u003C/h2>\n\u003Cp>Mungkin sekarang penggunaan pointer terlihat kurang peting ya. Tunggu saja nanti saat menggunakan FUNCTION dan PROCEDURE, pointer ini bisa sangat berguna untuk memanipulasi data. Dengan konsep yang sama tentunya.\u003C/p>\n\u003Cp>Sekian untuk tutorial kali ini, semoga bermanfaat :D\u003C/p>\n\u003Cp>Selanjutnya kita akan membahas tentang konsep \u003Ca href=\"https://invasikode.com/pascal-prosedural/\">pemrograman prosedural pada bahasa Pascal\u003C/a>\u003C/p>\n","",[120,133,148,160],{"id":121,"title":122,"slug":123,"excerpt":124,"thumbnail_image":125,"tags":127},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":126},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[128,129,130,131,132],"system-programming","rust","zig","c","memory-safety",{"id":134,"title":135,"slug":136,"excerpt":137,"thumbnail_image":138,"tags":140},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":139},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[141,142,143,144,145,146,147],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":149,"title":150,"slug":151,"excerpt":152,"thumbnail_image":153,"tags":155},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":154},"e3c617fd-1486-4b82-b937-94fbec846c77",[141,156,146,157,158,142,159],"microservices","database","message-broker","postgresql",{"id":161,"title":162,"slug":163,"excerpt":164,"thumbnail_image":165,"tags":167},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":166},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[168,158,141,146,156,169,170],"rabbitmq","async","python",[172,175,178,181,184],{"text":173,"depth":55,"id":174},"Apa itu Pointer?","apa-itu-pointer",{"text":176,"depth":55,"id":177},"Mendeklarasikan Pointer pada Pascal","mendeklarasikan-pointer-pada-pascal",{"text":179,"depth":55,"id":180},"Mendapatkan Alamat Variable","mendapatkan-alamat-variable",{"text":182,"depth":55,"id":183},"Mengakses Nilai Pointer","mengakses-nilai-pointer",{"text":185,"depth":55,"id":186},"Penutup","penutup",1791045069265]